From 445fb9124eb3fcb5d4f342c476b9ae3637f185aa Mon Sep 17 00:00:00 2001 From: DreamingOfClouds Date: Thu, 29 Oct 2026 00:22:48 -0500 Subject: [PATCH] research: P104 designer toolkit v2 (exact pricing, #6030 rebuild + fold/hoist/retain, generators, sub-circuit tools, floor LPs) Packages the P104 designer toolkit as research/p104-designer-toolkit-v2 (the frozen research/p104-designer-toolkit is untouched). No kappa claim and no new word: exact pricing and legality oracle, verifier-profile adoption, the #6030 rebuild pipeline with the fold/hoist/retain constructor passes (reaches the exact kappa of #6143, #6144 and #6167), gen2/gen3 generators, sub-circuit extract/splice/re-solve tools, bulk evaluation, the floor LPs and the theory and lemma write-ups. VERIFY.json replays tests/regress.py --fast and the retain test on Python 3.12 with numpy, scipy and sympy. Prepared by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. Co-Authored-By: Claude Opus 5.5 --- research/p104-designer-toolkit-v2/.gitignore | 10 + research/p104-designer-toolkit-v2/MAP.md | 252 ++ .../p104-designer-toolkit-v2/P104-LEMMAS.md | 534 ++++ .../p104-designer-toolkit-v2/P104-THEORY.md | 606 ++++ .../PRIMMINE-RULES.tsv | 1593 ++++++++++ .../PRIMMINE-SCALE-RULES.tsv | 52 + research/p104-designer-toolkit-v2/README.md | 145 + .../p104-designer-toolkit-v2/SOURCES.json | 755 +++++ research/p104-designer-toolkit-v2/TASK.json | 73 + research/p104-designer-toolkit-v2/VERIFY.json | 32 + research/p104-designer-toolkit-v2/a2x.py | 67 + research/p104-designer-toolkit-v2/accept.py | 263 ++ research/p104-designer-toolkit-v2/admit.py | 270 ++ research/p104-designer-toolkit-v2/adopt.py | 243 ++ .../adopt_validate.py | 100 + .../p104-designer-toolkit-v2/alias_core.py | 528 ++++ .../alignbuild/__init__.py | 0 .../alignbuild/anatomy_core.py | 250 ++ .../alignbuild/api.py | 148 + .../alignbuild/data/anat_9b4728cb815aa1b3.pkl | Bin 0 -> 70693 bytes .../alignbuild/data/manifest_6030.json | 15 + .../alignbuild/data/y1.pkl | Bin 0 -> 273623 bytes .../alignbuild/data/y4.pkl | Bin 0 -> 12877 bytes .../alignbuild/endanat.py | 185 ++ .../alignbuild/fcls.py | 50 + .../alignbuild/fold.py | 132 + .../alignbuild/foldcensus.py | 79 + .../alignbuild/hoist.py | 131 + .../alignbuild/hubs.py | 270 ++ .../alignbuild/hubs_owned.py | 420 +++ .../alignbuild/iob2.py | 471 +++ .../alignbuild/life.py | 91 + .../alignbuild/markets.py | 322 ++ .../alignbuild/markets_full.py | 813 +++++ .../alignbuild/mktbuild.py | 142 + .../alignbuild/retain.py | 172 + .../alignbuild/routing.py | 342 ++ .../p104-designer-toolkit-v2/alignbuild/rp.py | 603 ++++ .../alignbuild/sigside.py | 259 ++ .../alignbuild/skeleton.py | 278 ++ .../alignbuild/tiling.py | 40 + research/p104-designer-toolkit-v2/anatomy.py | 24 + research/p104-designer-toolkit-v2/autodec.py | 245 ++ .../automacro_mine.py | 71 + .../automacro_rsplit.py | 134 + research/p104-designer-toolkit-v2/bitadapt.py | 134 + .../p104-designer-toolkit-v2/bitceiling.py | 29 + research/p104-designer-toolkit-v2/bitmut.py | 46 + .../p104-designer-toolkit-v2/bitmut_pr.py | 20 + research/p104-designer-toolkit-v2/bitprims.py | 368 +++ .../p104-designer-toolkit-v2/bitscreen.py | 137 + .../p104-designer-toolkit-v2/bitsearch.py | 69 + research/p104-designer-toolkit-v2/bitval.py | 34 + research/p104-designer-toolkit-v2/bitword.py | 115 + .../p104-designer-toolkit-v2/bitworker.py | 106 + .../p104-designer-toolkit-v2/blockmove.py | 171 + research/p104-designer-toolkit-v2/bulk.py | 325 ++ research/p104-designer-toolkit-v2/check.py | 121 + research/p104-designer-toolkit-v2/ctxmine.py | 234 ++ research/p104-designer-toolkit-v2/ctxmine2.py | 144 + .../p104-designer-toolkit-v2/ctxmine2_lift.py | 27 + .../p104-designer-toolkit-v2/ctxmine2_scan.py | 78 + .../p104-designer-toolkit-v2/ctxmine_lift.py | 28 + .../p104-designer-toolkit-v2/ctxmine_scan.py | 78 + research/p104-designer-toolkit-v2/dag.py | 169 + research/p104-designer-toolkit-v2/data/S.txt | 2797 +++++++++++++++++ .../p104-designer-toolkit-v2/data/Smodel.json | 1 + .../p104-designer-toolkit-v2/data/rc1.txt | 916 ++++++ .../p104-designer-toolkit-v2/data/vu.json | 1 + .../p104-designer-toolkit-v2/decompile.py | 16 + research/p104-designer-toolkit-v2/diff.py | 74 + research/p104-designer-toolkit-v2/dq.py | 327 ++ research/p104-designer-toolkit-v2/eval.py | 225 ++ research/p104-designer-toolkit-v2/evlat.py | 183 ++ research/p104-designer-toolkit-v2/evretime.py | 19 + .../p104-designer-toolkit-v2/fastnative.py | 157 + research/p104-designer-toolkit-v2/frames.py | 215 ++ research/p104-designer-toolkit-v2/gapmap.py | 211 ++ research/p104-designer-toolkit-v2/gen.py | 23 + .../p104-designer-toolkit-v2/gen2/allh.py | 37 + .../gen2/blindcode.py | 49 + .../gen2/data/cliques8.pkl | Bin 0 -> 464 bytes .../gen2/data/dual.pkl | Bin 0 -> 1262 bytes .../gen2/data/exact8.pkl | Bin 0 -> 129586 bytes .../gen2/data/m5827.pkl | Bin 0 -> 800492 bytes .../p104-designer-toolkit-v2/gen2/dmatch.py | 26 + .../p104-designer-toolkit-v2/gen2/dscan3.py | 25 + .../p104-designer-toolkit-v2/gen2/dyadic.py | 79 + .../p104-designer-toolkit-v2/gen2/edges.py | 104 + research/p104-designer-toolkit-v2/gen2/ee0.py | 86 + research/p104-designer-toolkit-v2/gen2/geo.py | 17 + research/p104-designer-toolkit-v2/gen2/grp.py | 58 + .../p104-designer-toolkit-v2/gen2/hgreedy.py | 50 + .../p104-designer-toolkit-v2/gen2/jsupp.py | 48 + .../p104-designer-toolkit-v2/gen2/late.py | 123 + .../gen2/levers/bank.py | 443 +++ .../gen2/levers/octet/life.py | 221 ++ .../gen2/levers/octet/purex.py | 243 ++ .../gen2/levers/octet/purex2.py | 215 ++ .../gen2/levers/octet_stack.py | 117 + .../gen2/levers/stack.py | 44 + .../p104-designer-toolkit-v2/gen2/purex.py | 242 ++ .../p104-designer-toolkit-v2/gen2/purex2.py | 272 ++ .../p104-designer-toolkit-v2/gen2/relaytop.py | 67 + .../p104-designer-toolkit-v2/gen2/route_b.py | 147 + research/p104-designer-toolkit-v2/gen2/rt.py | 296 ++ .../p104-designer-toolkit-v2/gen2/sweep.py | 13 + .../p104-designer-toolkit-v2/gen2/valcheck.py | 25 + .../p104-designer-toolkit-v2/gen2/ylate.py | 149 + research/p104-designer-toolkit-v2/genpipe.py | 309 ++ research/p104-designer-toolkit-v2/genpipe2.py | 201 ++ research/p104-designer-toolkit-v2/genpipe3.py | 201 ++ .../gensearch/__init__.py | 8 + .../gensearch/build.py | 143 + .../p104-designer-toolkit-v2/gensearch/run.py | 153 + .../gensearch/space.py | 56 + research/p104-designer-toolkit-v2/handoff.py | 527 ++++ research/p104-designer-toolkit-v2/handover.py | 783 +++++ research/p104-designer-toolkit-v2/hops.py | 90 + research/p104-designer-toolkit-v2/ibase.py | 376 +++ research/p104-designer-toolkit-v2/incr.py | 517 +++ .../infra/dims_relax.py | 118 + .../infra/floors_true.py | 46 + .../infra/lattice_retime.py | 169 + .../p104-designer-toolkit-v2/infra/legal.py | 169 + .../p104-designer-toolkit-v2/infra/linwt.py | 21 + .../p104-designer-toolkit-v2/infra/model3.py | 177 ++ .../infra/native_pair.py | 42 + .../infra/price_exact.py | 113 + .../infra/realcheck.py | 33 + .../infra/rigidity.py | 87 + .../infra/tests/fuzz_vs_real.py | 39 + .../infra/tests/toy_owned_descent.py | 20 + .../infra/tests/wedit_demo.py | 24 + .../p104-designer-toolkit-v2/infra/wedit.py | 50 + .../inputs/pr5545-source-closure.tar.gz | Bin 0 -> 469619 bytes .../p104-designer-toolkit-v2/k2/__init__.py | 0 research/p104-designer-toolkit-v2/k2/bt.sh | 5 + research/p104-designer-toolkit-v2/k2/cost.py | 19 + .../p104-designer-toolkit-v2/k2/engine.py | 45 + research/p104-designer-toolkit-v2/k2/k2.cpp | 545 ++++ .../p104-designer-toolkit-v2/k2/k2frames.inc | 119 + .../p104-designer-toolkit-v2/k2/k2grow.inc | 127 + .../p104-designer-toolkit-v2/k2/k2levers.inc | 98 + .../p104-designer-toolkit-v2/k2/k2net.inc | 68 + .../k2/k2phi.hooks.patch | 49 + .../p104-designer-toolkit-v2/k2/k2phi.inc | 106 + .../p104-designer-toolkit-v2/k2/k2search.inc | 770 +++++ .../p104-designer-toolkit-v2/k2/levers.py | 98 + .../k2/purexlib/ee0.py | 86 + .../k2/purexlib/purex.py | 240 ++ .../k2/purexlib/purex2.py | 209 ++ .../p104-designer-toolkit-v2/k2/screen.py | 75 + .../p104-designer-toolkit-v2/k2bit_search.py | 315 ++ research/p104-designer-toolkit-v2/ledger.py | 39 + research/p104-designer-toolkit-v2/legalize.py | 100 + research/p104-designer-toolkit-v2/macros.py | 464 +++ research/p104-designer-toolkit-v2/movekit.py | 344 ++ research/p104-designer-toolkit-v2/mrf_ac.py | 43 + .../native/__init__.py | 1 + .../native/nativecore.c | 73 + .../p104-designer-toolkit-v2/native/nincr.py | 158 + .../p104-designer-toolkit-v2/nativepar.py | 13 + .../planbuild/build.py | 643 ++++ .../planbuild/census.py | 38 + .../planbuild/plan.py | 94 + .../p104-designer-toolkit-v2/potentials.py | 219 ++ research/p104-designer-toolkit-v2/price.py | 49 + research/p104-designer-toolkit-v2/pricer.py | 20 + .../pricer/price_r.py | 218 ++ .../p104-designer-toolkit-v2/pricer/synth.py | 27 + .../pricer/verify_r.py | 49 + research/p104-designer-toolkit-v2/prims.py | 479 +++ .../p104-designer-toolkit-v2/prims_alias.py | 28 + .../p104-designer-toolkit-v2/prims_alias2.py | 280 ++ .../p104-designer-toolkit-v2/prims_extra.py | 594 ++++ .../p104-designer-toolkit-v2/prims_mined.py | 202 ++ .../p104-designer-toolkit-v2/prims_role.py | 343 ++ .../profiles/5551.json | 240 ++ .../profiles/5551/base_local.py | 264 ++ .../profiles/5551/pricing.py | 156 + .../profiles/5565.json | 240 ++ .../profiles/5565/base_local.py | 264 ++ .../profiles/5565/pricing.py | 191 ++ .../profiles/5580.json | 237 ++ .../profiles/5580/base_local.py | 264 ++ .../profiles/5580/pricing.py | 156 + .../profiles/5599.json | 247 ++ .../profiles/5599/base_local.py | 206 ++ .../profiles/5599/pricing.py | 169 + .../profiles/5612.json | 264 ++ .../profiles/5612/base_local.py | 206 ++ .../profiles/5612/pricing.py | 169 + .../profiles/5612/replay_local.py | 141 + .../profiles/5613.json | 264 ++ .../profiles/5613/base_local.py | 206 ++ .../profiles/5613/pricing.py | 169 + .../profiles/5613/replay_local.py | 141 + .../profiles/5644.json | 249 ++ .../profiles/5644/base_local.py | 208 ++ .../profiles/5644/pricing.py | 174 + .../profiles/5650.json | 248 ++ .../profiles/5650/base_local.py | 208 ++ .../profiles/5650/pricing.py | 174 + .../profiles/5660.json | 249 ++ .../profiles/5660/base_local.py | 208 ++ .../profiles/5660/pricing.py | 176 ++ .../profiles/5678.json | 249 ++ .../profiles/5678/base_local.py | 208 ++ .../profiles/5678/pricing.py | 177 ++ .../profiles/5678_af814f6f.json | 254 ++ .../profiles/5678_af814f6f/base_local.py | 264 ++ .../profiles/5678_af814f6f/pricing.py | 177 ++ .../profiles/5678_af814f6f/replay_local.py | 208 ++ .../profiles/5713.json | 249 ++ .../profiles/5713/base_local.py | 208 ++ .../profiles/5713/pricing.py | 177 ++ .../profiles/5713_a5348f71.json | 249 ++ .../profiles/5713_a5348f71/base_local.py | 208 ++ .../profiles/5713_a5348f71/pricing.py | 177 ++ .../profiles/5718.json | 249 ++ .../profiles/5718/base_local.py | 208 ++ .../profiles/5718/pricing.py | 177 ++ .../profiles/5718_a1534ac4.json | 249 ++ .../profiles/5718_a1534ac4/base_local.py | 208 ++ .../profiles/5718_a1534ac4/pricing.py | 177 ++ .../profiles/5739.json | 254 ++ .../profiles/5739/base_local.py | 264 ++ .../profiles/5739/pricing.py | 177 ++ .../profiles/5739/replay_local.py | 208 ++ .../profiles/5739_b93d749a.json | 254 ++ .../profiles/5739_b93d749a/base_local.py | 264 ++ .../profiles/5739_b93d749a/pricing.py | 177 ++ .../profiles/5739_b93d749a/replay_local.py | 208 ++ .../profiles/5751.json | 250 ++ .../profiles/5751/base_local.py | 208 ++ .../profiles/5751/pricing.py | 184 ++ .../profiles/5756.json | 249 ++ .../profiles/5756/base_local.py | 208 ++ .../profiles/5756/pricing.py | 184 ++ .../profiles/5774.json | 252 ++ .../profiles/5774/base_local.py | 208 ++ .../profiles/5774/pricing.py | 184 ++ .../profiles/5786.json | 252 ++ .../profiles/5786/base_local.py | 208 ++ .../profiles/5786/pricing.py | 184 ++ .../profiles/5796.json | 249 ++ .../profiles/5796/base_local.py | 208 ++ .../profiles/5796/pricing.py | 186 ++ .../profiles/5802.json | 252 ++ .../profiles/5802/base_local.py | 208 ++ .../profiles/5802/pricing.py | 184 ++ .../profiles/5802_9bab1ca9.json | 252 ++ .../profiles/5802_9bab1ca9/base_local.py | 208 ++ .../profiles/5802_9bab1ca9/pricing.py | 184 ++ .../profiles/5811.json | 253 ++ .../profiles/5811/base_local.py | 208 ++ .../profiles/5811/pricing.py | 184 ++ .../profiles/5811_883ab9ca.json | 253 ++ .../profiles/5811_883ab9ca/base_local.py | 208 ++ .../profiles/5811_883ab9ca/pricing.py | 184 ++ .../profiles/5812.json | 244 ++ .../profiles/5812/base_local.py | 208 ++ .../profiles/5812/pricing.py | 200 ++ .../profiles/5827.json | 224 ++ .../profiles/5827/base_local.py | 208 ++ .../profiles/5827/pricing.py | 184 ++ .../profiles/5827_05cd36e5.json | 252 ++ .../profiles/5827_05cd36e5/base_local.py | 208 ++ .../profiles/5827_05cd36e5/pricing.py | 184 ++ .../profiles/5907.json | 253 ++ .../profiles/5907/base_local.py | 208 ++ .../profiles/5907/pricing.py | 184 ++ .../profiles/5907_c1cbd9e3.json | 253 ++ .../profiles/5907_c1cbd9e3/base_local.py | 208 ++ .../profiles/5907_c1cbd9e3/pricing.py | 184 ++ .../profiles/6030.json | 254 ++ .../profiles/6030/base_local.py | 208 ++ .../profiles/6030/pricing.py | 184 ++ .../profiles/6030_772dd10a.json | 254 ++ .../profiles/6030_772dd10a/base_local.py | 208 ++ .../profiles/6030_772dd10a/pricing.py | 184 ++ .../profiles/6143.json | 254 ++ .../profiles/6143/base_local.py | 208 ++ .../profiles/6143/pricing.py | 184 ++ .../profiles/6144.json | 254 ++ .../profiles/6144/base_local.py | 208 ++ .../profiles/6144/pricing.py | 184 ++ .../profiles/6167.json | 254 ++ .../profiles/6167/base_local.py | 208 ++ .../profiles/6167/pricing.py | 184 ++ .../profiles/6167_564a076b.json | 254 ++ .../profiles/6167_564a076b/base_local.py | 208 ++ .../profiles/6167_564a076b/pricing.py | 184 ++ research/p104-designer-toolkit-v2/pscreen.py | 109 + research/p104-designer-toolkit-v2/real.py | 76 + .../real/p5612/pr5599-local.py | 206 ++ .../real/p5612/prepared573_local.py | 141 + .../real/p5612/pricing.py | 169 + .../real/p5660/pr5627-local.py | 208 ++ .../real/p5660/pricing.py | 176 ++ .../real/pr5551-pricing.py | 156 + research/p104-designer-toolkit-v2/realise.py | 41 + research/p104-designer-toolkit-v2/rebuild.py | 67 + research/p104-designer-toolkit-v2/reframe.py | 16 + research/p104-designer-toolkit-v2/relat.py | 399 +++ research/p104-designer-toolkit-v2/relay.py | 196 ++ .../p104-designer-toolkit-v2/relaycomp.py | 360 +++ research/p104-designer-toolkit-v2/reorder.py | 20 + research/p104-designer-toolkit-v2/retime.py | 149 + research/p104-designer-toolkit-v2/sedit.py | 167 + research/p104-designer-toolkit-v2/sens.py | 34 + .../p104-designer-toolkit-v2/shipcheck.py | 201 ++ research/p104-designer-toolkit-v2/shipreal.py | 68 + research/p104-designer-toolkit-v2/sigfuse.py | 382 +++ .../p104-designer-toolkit-v2/spansolve.py | 395 +++ research/p104-designer-toolkit-v2/split.py | 87 + research/p104-designer-toolkit-v2/split2.py | 197 ++ .../p104-designer-toolkit-v2/splitretire.py | 45 + .../splitvendor/NOTICE | 22 + .../splitvendor/SPLITS_5599n.json | 407 +++ .../splitvendor/construct.py | 158 + .../splitvendor/local.py | 206 ++ .../splitvendor/search.py | 154 + .../subcirc/hubclean.py | 80 + .../subcirc/library.py | 64 + .../p104-designer-toolkit-v2/subcirc/pdata.py | 62 + .../subcirc/runaxes.py | 14 + .../p104-designer-toolkit-v2/subcirc/spec.py | 48 + .../subcirc/specs/dual_1027.json.gz | Bin 0 -> 11258 bytes .../subcirc/specs/dual_1031.json.gz | Bin 0 -> 10132 bytes .../subcirc/specs/dual_1048.json.gz | Bin 0 -> 7869 bytes .../subcirc/specs/dual_1049.json.gz | Bin 0 -> 6927 bytes .../subcirc/specs/dual_1050.json.gz | Bin 0 -> 4452 bytes .../subcirc/specs/dual_1051.json.gz | Bin 0 -> 7861 bytes .../subcirc/specs/dual_1052.json.gz | Bin 0 -> 8273 bytes .../subcirc/specs/dual_1053.json.gz | Bin 0 -> 5235 bytes .../subcirc/specs/dual_114.json.gz | Bin 0 -> 4633 bytes .../subcirc/specs/dual_115.json.gz | Bin 0 -> 8958 bytes .../subcirc/specs/dual_116.json.gz | Bin 0 -> 8763 bytes .../subcirc/specs/dual_117.json.gz | Bin 0 -> 12054 bytes .../subcirc/specs/dual_118.json.gz | Bin 0 -> 7048 bytes .../subcirc/specs/dual_120.json.gz | Bin 0 -> 9142 bytes .../subcirc/supcol.py | 253 ++ .../p104-designer-toolkit-v2/subcirc/ysink.py | 32 + .../p104-designer-toolkit-v2/surgery/cen.py | 115 + .../surgery/data/clus_7.pkl | Bin 0 -> 6454 bytes .../surgery/extract.py | 90 + .../p104-designer-toolkit-v2/surgery/s5lib.py | 85 + .../surgery/splice.py | 169 + .../p104-designer-toolkit-v2/surgery/swlib.py | 238 ++ .../surgery/validate.py | 136 + .../synth/__init__.py | 19 + .../p104-designer-toolkit-v2/synth/backgen.py | 222 ++ .../synth/backgen_measure.py | 32 + .../synth/climbbuild.py | 11 + .../p104-designer-toolkit-v2/synth/compact.py | 195 ++ .../synth/data/backgen_dilworth.json | 1 + .../synth/data/backgen_groups.json | 1 + .../synth/data/helpershare_trie.json | 1 + .../synth/data/hubgen_plan.json | 1 + .../synth/data/hubladder_plan.json | 1 + .../synth/data/jointfeed_plan.txt | 2540 +++++++++++++++ .../synth/data/jointfeed_signal.json | 1 + .../synth/data/kernel2_signal.json | 1 + .../synth/data/learned_rules.json | 1 + .../synth/data/mainhub_plan.txt | 2474 +++++++++++++++ .../synth/data/partialtrie_plan.txt | 2448 +++++++++++++++ .../synth/data/partialtrie_signal.json | 1 + .../synth/data/residual_flags.json | 1 + .../synth/data/sharedsum_signal.json | 1 + .../synth/data/sign_code.json | 1 + .../p104-designer-toolkit-v2/synth/flaggen.py | 155 + .../synth/frontgen.py | 313 ++ .../p104-designer-toolkit-v2/synth/gen.py | 158 + .../synth/helpershare.py | 228 ++ .../p104-designer-toolkit-v2/synth/hubgen.py | 103 + .../synth/hubladder.cpp | 202 ++ .../synth/hubladder.py | 148 + .../p104-designer-toolkit-v2/synth/hubsa.cpp | 177 ++ .../p104-designer-toolkit-v2/synth/hybrid.py | 129 + .../synth/jointfeed.py | 208 ++ .../p104-designer-toolkit-v2/synth/k2bit.py | 95 + .../synth/k2search_validate.py | 96 + .../p104-designer-toolkit-v2/synth/kernel2.py | 15 + .../synth/kernel2net.py | 87 + .../p104-designer-toolkit-v2/synth/learned.py | 245 ++ .../synth/learned_stats.py | 260 ++ .../synth/mainhub.cpp | 342 ++ .../p104-designer-toolkit-v2/synth/mainhub.py | 243 ++ .../synth/partialtrie.py | 17 + .../p104-designer-toolkit-v2/synth/repair.py | 77 + .../synth/residual.py | 90 + .../p104-designer-toolkit-v2/synth/rlever.py | 50 + .../synth/rlever_sign.py | 37 + .../p104-designer-toolkit-v2/synth/s2s.py | 353 +++ .../p104-designer-toolkit-v2/synth/sample.py | 153 + .../synth/sharedsum.py | 108 + .../p104-designer-toolkit-v2/synth/spec.py | 102 + .../tests/admit_test.py | 73 + .../tests/adopt_test.py | 55 + .../tests/alias2_test.py | 37 + .../tests/alignbuild_test.py | 69 + .../tests/automacro_test.py | 19 + .../tests/backtest.py | 58 + .../tests/bit_test.py | 18 + .../tests/bitprims_test.py | 28 + .../tests/bulk_test.py | 59 + .../tests/canon_test.py | 26 + .../tests/clsfix_test.py | 21 + .../tests/ctxmine2_test.py | 30 + .../tests/ctxmine_test.py | 19 + .../p104-designer-toolkit-v2/tests/dq_diff.py | 60 + .../tests/eval_test.py | 58 + .../tests/fastnative_test.py | 95 + .../tests/fastsites_test.py | 15 + .../tests/framegap_test.py | 27 + .../tests/fuzz_real.py | 126 + .../tests/gapmap_test.py | 32 + .../tests/gen3_test.py | 30 + .../tests/genpipe2_test.py | 42 + .../tests/gensearch_test.py | 20 + .../tests/genupgrade_test.py | 30 + .../tests/handoff6030_test.py | 20 + .../tests/handover_test.py | 43 + .../tests/heuristics_test.py | 45 + .../tests/ibase_fast_test.py | 45 + .../tests/import_env_test.py | 32 + .../tests/incr_fuzz.py | 320 ++ .../tests/incr_test.py | 23 + .../tests/k2bit_test.py | 23 + .../tests/k2frames_test.py | 53 + .../tests/k2levers_test.py | 63 + .../tests/k2screen_fallback_test.py | 38 + .../tests/k2unify_test.py | 96 + .../tests/learned_test.py | 23 + .../tests/leverbank_test.py | 35 + .../tests/macros_test.py | 41 + .../tests/moves_test.py | 79 + .../tests/nincr_test.py | 35 + .../tests/planbuild_test.py | 79 + .../tests/primgen_test.py | 23 + .../tests/primmine_open_test.py | 16 + .../tests/prims_extra_test.py | 42 + .../tests/prims_mined_test.py | 48 + .../tests/prims_role_test.py | 33 + .../tests/prims_test.py | 76 + .../tests/pscreen_test.py | 28 + .../tests/rebuild_diff.py | 61 + .../p104-designer-toolkit-v2/tests/regress.py | 319 ++ .../tests/relay_test.py | 91 + .../tests/retain_test.py | 30 + .../tests/retimegap_test.py | 39 + .../tests/s2s_test.py | 34 + .../tests/screen_smoke.py | 106 + .../tests/search_test.py | 67 + .../tests/searchperf_test.py | 138 + .../tests/sedit_diff.py | 87 + .../tests/shipcheck_test.py | 22 + .../tests/side_tail_test.py | 30 + .../tests/siggen_test.py | 23 + .../tests/speed_test.py | 85 + .../tests/splitretire_test.py | 20 + .../tests/surgery_test.py | 56 + .../tests/window_test.py | 28 + research/p104-designer-toolkit-v2/tk | 2 + research/p104-designer-toolkit-v2/tk.py | 63 + research/p104-designer-toolkit-v2/tkcommon.py | 226 ++ research/p104-designer-toolkit-v2/tkstack.py | 211 ++ .../words/5545.json.gz | Bin 0 -> 107042 bytes .../words/5551.json.gz | Bin 0 -> 107082 bytes .../words/5553.json.gz | Bin 0 -> 109714 bytes .../words/5553A.json.gz | Bin 0 -> 109695 bytes .../words/5561.json.gz | Bin 0 -> 106453 bytes .../words/5561s.json.gz | Bin 0 -> 106527 bytes .../words/5565.json.gz | Bin 0 -> 105088 bytes .../words/5565A.json.gz | Bin 0 -> 105125 bytes .../words/5565old.json.gz | Bin 0 -> 107075 bytes .../words/5569.json.gz | Bin 0 -> 108940 bytes .../words/5580.json.gz | Bin 0 -> 105115 bytes .../words/5599.json.gz | Bin 0 -> 108157 bytes .../words/5599n.json.gz | Bin 0 -> 108031 bytes .../words/5612.json.gz | Bin 0 -> 108580 bytes .../words/5613.json.gz | Bin 0 -> 108576 bytes .../words/5627.json.gz | Bin 0 -> 107885 bytes .../words/5644.json.gz | Bin 0 -> 107894 bytes .../words/5650.json.gz | Bin 0 -> 106632 bytes .../words/5660.json.gz | Bin 0 -> 107909 bytes .../words/5666.json.gz | Bin 0 -> 106633 bytes .../words/5678.json.gz | Bin 0 -> 120135 bytes .../words/5678_af814f6f.json.gz | Bin 0 -> 120135 bytes .../words/5684.json.gz | Bin 0 -> 106613 bytes .../words/5713.json.gz | Bin 0 -> 120142 bytes .../words/5713_a5348f71.json.gz | Bin 0 -> 120142 bytes .../words/5718.json.gz | Bin 0 -> 120522 bytes .../words/5718_a1534ac4.json.gz | Bin 0 -> 120522 bytes .../words/5739.json.gz | Bin 0 -> 106680 bytes .../words/5739_b93d749a.json.gz | Bin 0 -> 106680 bytes .../words/5751.json.gz | Bin 0 -> 121994 bytes .../words/5756.json.gz | Bin 0 -> 108262 bytes .../words/5774.json.gz | Bin 0 -> 122348 bytes .../words/5786.json.gz | Bin 0 -> 122792 bytes .../words/5795.json.gz | Bin 0 -> 122816 bytes .../words/5796.json.gz | Bin 0 -> 122072 bytes .../words/5802.json.gz | Bin 0 -> 122848 bytes .../words/5802_9bab1ca9.json.gz | Bin 0 -> 122848 bytes .../words/5811.json.gz | Bin 0 -> 122915 bytes .../words/5811_883ab9ca.json.gz | Bin 0 -> 122915 bytes .../words/5812.json.gz | Bin 0 -> 122898 bytes .../words/5827.json.gz | Bin 0 -> 122919 bytes .../words/5827_05cd36e5.json.gz | Bin 0 -> 122919 bytes .../words/5907.json.gz | Bin 0 -> 138258 bytes .../words/5907_c1cbd9e3.json.gz | Bin 0 -> 138258 bytes .../words/6030.json.gz | Bin 0 -> 119880 bytes .../words/6030_772dd10a.json.gz | Bin 0 -> 119880 bytes .../words/6143.json.gz | Bin 0 -> 119977 bytes .../words/6144.json.gz | Bin 0 -> 119901 bytes .../words/6145.json.gz | Bin 0 -> 120021 bytes .../words/6167.json.gz | Bin 0 -> 119929 bytes .../words/6167_564a076b.json.gz | Bin 0 -> 119929 bytes .../words/on5612.json.gz | Bin 0 -> 110011 bytes .../wsearch/__init__.py | 20 + .../p104-designer-toolkit-v2/wsearch/canon.py | 119 + .../p104-designer-toolkit-v2/wsearch/drive.py | 457 +++ .../wsearch/evalincr.py | 129 + .../p104-designer-toolkit-v2/wsearch/guide.py | 52 + .../wsearch/plateau.py | 322 ++ .../p104-designer-toolkit-v2/wsearch/pools.py | 46 + .../p104-designer-toolkit-v2/wsearch/store.py | 58 + 529 files changed, 82694 insertions(+) create mode 100644 research/p104-designer-toolkit-v2/.gitignore create mode 100644 research/p104-designer-toolkit-v2/MAP.md create mode 100644 research/p104-designer-toolkit-v2/P104-LEMMAS.md create mode 100644 research/p104-designer-toolkit-v2/P104-THEORY.md create mode 100644 research/p104-designer-toolkit-v2/PRIMMINE-RULES.tsv create mode 100644 research/p104-designer-toolkit-v2/PRIMMINE-SCALE-RULES.tsv create mode 100644 research/p104-designer-toolkit-v2/README.md create mode 100644 research/p104-designer-toolkit-v2/SOURCES.json create mode 100644 research/p104-designer-toolkit-v2/TASK.json create mode 100644 research/p104-designer-toolkit-v2/VERIFY.json create mode 100644 research/p104-designer-toolkit-v2/a2x.py create mode 100644 research/p104-designer-toolkit-v2/accept.py create mode 100644 research/p104-designer-toolkit-v2/admit.py create mode 100644 research/p104-designer-toolkit-v2/adopt.py create mode 100644 research/p104-designer-toolkit-v2/adopt_validate.py create mode 100644 research/p104-designer-toolkit-v2/alias_core.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/__init__.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/anatomy_core.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/api.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/data/anat_9b4728cb815aa1b3.pkl create mode 100644 research/p104-designer-toolkit-v2/alignbuild/data/manifest_6030.json create mode 100644 research/p104-designer-toolkit-v2/alignbuild/data/y1.pkl create mode 100644 research/p104-designer-toolkit-v2/alignbuild/data/y4.pkl create mode 100644 research/p104-designer-toolkit-v2/alignbuild/endanat.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/fcls.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/fold.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/foldcensus.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/hoist.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/hubs.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/hubs_owned.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/iob2.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/life.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/markets.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/markets_full.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/mktbuild.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/retain.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/routing.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/rp.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/sigside.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/skeleton.py create mode 100644 research/p104-designer-toolkit-v2/alignbuild/tiling.py create mode 100644 research/p104-designer-toolkit-v2/anatomy.py create mode 100644 research/p104-designer-toolkit-v2/autodec.py create mode 100644 research/p104-designer-toolkit-v2/automacro_mine.py create mode 100644 research/p104-designer-toolkit-v2/automacro_rsplit.py create mode 100644 research/p104-designer-toolkit-v2/bitadapt.py create mode 100644 research/p104-designer-toolkit-v2/bitceiling.py create mode 100644 research/p104-designer-toolkit-v2/bitmut.py create mode 100644 research/p104-designer-toolkit-v2/bitmut_pr.py create mode 100644 research/p104-designer-toolkit-v2/bitprims.py create mode 100644 research/p104-designer-toolkit-v2/bitscreen.py create mode 100644 research/p104-designer-toolkit-v2/bitsearch.py create mode 100644 research/p104-designer-toolkit-v2/bitval.py create mode 100644 research/p104-designer-toolkit-v2/bitword.py create mode 100644 research/p104-designer-toolkit-v2/bitworker.py create mode 100644 research/p104-designer-toolkit-v2/blockmove.py create mode 100644 research/p104-designer-toolkit-v2/bulk.py create mode 100644 research/p104-designer-toolkit-v2/check.py create mode 100644 research/p104-designer-toolkit-v2/ctxmine.py create mode 100644 research/p104-designer-toolkit-v2/ctxmine2.py create mode 100644 research/p104-designer-toolkit-v2/ctxmine2_lift.py create mode 100644 research/p104-designer-toolkit-v2/ctxmine2_scan.py create mode 100644 research/p104-designer-toolkit-v2/ctxmine_lift.py create mode 100644 research/p104-designer-toolkit-v2/ctxmine_scan.py create mode 100644 research/p104-designer-toolkit-v2/dag.py create mode 100644 research/p104-designer-toolkit-v2/data/S.txt create mode 100644 research/p104-designer-toolkit-v2/data/Smodel.json create mode 100644 research/p104-designer-toolkit-v2/data/rc1.txt create mode 100644 research/p104-designer-toolkit-v2/data/vu.json create mode 100644 research/p104-designer-toolkit-v2/decompile.py create mode 100644 research/p104-designer-toolkit-v2/diff.py create mode 100644 research/p104-designer-toolkit-v2/dq.py create mode 100644 research/p104-designer-toolkit-v2/eval.py create mode 100644 research/p104-designer-toolkit-v2/evlat.py create mode 100644 research/p104-designer-toolkit-v2/evretime.py create mode 100644 research/p104-designer-toolkit-v2/fastnative.py create mode 100644 research/p104-designer-toolkit-v2/frames.py create mode 100644 research/p104-designer-toolkit-v2/gapmap.py create mode 100644 research/p104-designer-toolkit-v2/gen.py create mode 100644 research/p104-designer-toolkit-v2/gen2/allh.py create mode 100644 research/p104-designer-toolkit-v2/gen2/blindcode.py create mode 100644 research/p104-designer-toolkit-v2/gen2/data/cliques8.pkl create mode 100644 research/p104-designer-toolkit-v2/gen2/data/dual.pkl create mode 100644 research/p104-designer-toolkit-v2/gen2/data/exact8.pkl create mode 100644 research/p104-designer-toolkit-v2/gen2/data/m5827.pkl create mode 100644 research/p104-designer-toolkit-v2/gen2/dmatch.py create mode 100644 research/p104-designer-toolkit-v2/gen2/dscan3.py create mode 100644 research/p104-designer-toolkit-v2/gen2/dyadic.py create mode 100644 research/p104-designer-toolkit-v2/gen2/edges.py create mode 100644 research/p104-designer-toolkit-v2/gen2/ee0.py create mode 100644 research/p104-designer-toolkit-v2/gen2/geo.py create mode 100644 research/p104-designer-toolkit-v2/gen2/grp.py create mode 100644 research/p104-designer-toolkit-v2/gen2/hgreedy.py create mode 100644 research/p104-designer-toolkit-v2/gen2/jsupp.py create mode 100644 research/p104-designer-toolkit-v2/gen2/late.py create mode 100644 research/p104-designer-toolkit-v2/gen2/levers/bank.py create mode 100644 research/p104-designer-toolkit-v2/gen2/levers/octet/life.py create mode 100644 research/p104-designer-toolkit-v2/gen2/levers/octet/purex.py create mode 100644 research/p104-designer-toolkit-v2/gen2/levers/octet/purex2.py create mode 100644 research/p104-designer-toolkit-v2/gen2/levers/octet_stack.py create mode 100644 research/p104-designer-toolkit-v2/gen2/levers/stack.py create mode 100644 research/p104-designer-toolkit-v2/gen2/purex.py create mode 100644 research/p104-designer-toolkit-v2/gen2/purex2.py create mode 100644 research/p104-designer-toolkit-v2/gen2/relaytop.py create mode 100644 research/p104-designer-toolkit-v2/gen2/route_b.py create mode 100644 research/p104-designer-toolkit-v2/gen2/rt.py create mode 100644 research/p104-designer-toolkit-v2/gen2/sweep.py create mode 100644 research/p104-designer-toolkit-v2/gen2/valcheck.py create mode 100644 research/p104-designer-toolkit-v2/gen2/ylate.py create mode 100644 research/p104-designer-toolkit-v2/genpipe.py create mode 100644 research/p104-designer-toolkit-v2/genpipe2.py create mode 100644 research/p104-designer-toolkit-v2/genpipe3.py create mode 100644 research/p104-designer-toolkit-v2/gensearch/__init__.py create mode 100644 research/p104-designer-toolkit-v2/gensearch/build.py create mode 100644 research/p104-designer-toolkit-v2/gensearch/run.py create mode 100644 research/p104-designer-toolkit-v2/gensearch/space.py create mode 100644 research/p104-designer-toolkit-v2/handoff.py create mode 100644 research/p104-designer-toolkit-v2/handover.py create mode 100644 research/p104-designer-toolkit-v2/hops.py create mode 100644 research/p104-designer-toolkit-v2/ibase.py create mode 100644 research/p104-designer-toolkit-v2/incr.py create mode 100644 research/p104-designer-toolkit-v2/infra/dims_relax.py create mode 100644 research/p104-designer-toolkit-v2/infra/floors_true.py create mode 100644 research/p104-designer-toolkit-v2/infra/lattice_retime.py create mode 100644 research/p104-designer-toolkit-v2/infra/legal.py create mode 100644 research/p104-designer-toolkit-v2/infra/linwt.py create mode 100644 research/p104-designer-toolkit-v2/infra/model3.py create mode 100644 research/p104-designer-toolkit-v2/infra/native_pair.py create mode 100644 research/p104-designer-toolkit-v2/infra/price_exact.py create mode 100644 research/p104-designer-toolkit-v2/infra/realcheck.py create mode 100644 research/p104-designer-toolkit-v2/infra/rigidity.py create mode 100644 research/p104-designer-toolkit-v2/infra/tests/fuzz_vs_real.py create mode 100644 research/p104-designer-toolkit-v2/infra/tests/toy_owned_descent.py create mode 100644 research/p104-designer-toolkit-v2/infra/tests/wedit_demo.py create mode 100644 research/p104-designer-toolkit-v2/infra/wedit.py create mode 100644 research/p104-designer-toolkit-v2/inputs/pr5545-source-closure.tar.gz create mode 100644 research/p104-designer-toolkit-v2/k2/__init__.py create mode 100755 research/p104-designer-toolkit-v2/k2/bt.sh create mode 100644 research/p104-designer-toolkit-v2/k2/cost.py create mode 100644 research/p104-designer-toolkit-v2/k2/engine.py create mode 100644 research/p104-designer-toolkit-v2/k2/k2.cpp create mode 100644 research/p104-designer-toolkit-v2/k2/k2frames.inc create mode 100644 research/p104-designer-toolkit-v2/k2/k2grow.inc create mode 100644 research/p104-designer-toolkit-v2/k2/k2levers.inc create mode 100644 research/p104-designer-toolkit-v2/k2/k2net.inc create mode 100644 research/p104-designer-toolkit-v2/k2/k2phi.hooks.patch create mode 100644 research/p104-designer-toolkit-v2/k2/k2phi.inc create mode 100644 research/p104-designer-toolkit-v2/k2/k2search.inc create mode 100644 research/p104-designer-toolkit-v2/k2/levers.py create mode 100644 research/p104-designer-toolkit-v2/k2/purexlib/ee0.py create mode 100644 research/p104-designer-toolkit-v2/k2/purexlib/purex.py create mode 100644 research/p104-designer-toolkit-v2/k2/purexlib/purex2.py create mode 100644 research/p104-designer-toolkit-v2/k2/screen.py create mode 100644 research/p104-designer-toolkit-v2/k2bit_search.py create mode 100644 research/p104-designer-toolkit-v2/ledger.py create mode 100644 research/p104-designer-toolkit-v2/legalize.py create mode 100644 research/p104-designer-toolkit-v2/macros.py create mode 100644 research/p104-designer-toolkit-v2/movekit.py create mode 100644 research/p104-designer-toolkit-v2/mrf_ac.py create mode 100644 research/p104-designer-toolkit-v2/native/__init__.py create mode 100644 research/p104-designer-toolkit-v2/native/nativecore.c create mode 100644 research/p104-designer-toolkit-v2/native/nincr.py create mode 100644 research/p104-designer-toolkit-v2/nativepar.py create mode 100644 research/p104-designer-toolkit-v2/planbuild/build.py create mode 100644 research/p104-designer-toolkit-v2/planbuild/census.py create mode 100644 research/p104-designer-toolkit-v2/planbuild/plan.py create mode 100644 research/p104-designer-toolkit-v2/potentials.py create mode 100644 research/p104-designer-toolkit-v2/price.py create mode 100644 research/p104-designer-toolkit-v2/pricer.py create mode 100644 research/p104-designer-toolkit-v2/pricer/price_r.py create mode 100644 research/p104-designer-toolkit-v2/pricer/synth.py create mode 100644 research/p104-designer-toolkit-v2/pricer/verify_r.py create mode 100644 research/p104-designer-toolkit-v2/prims.py create mode 100644 research/p104-designer-toolkit-v2/prims_alias.py create mode 100644 research/p104-designer-toolkit-v2/prims_alias2.py create mode 100644 research/p104-designer-toolkit-v2/prims_extra.py create mode 100644 research/p104-designer-toolkit-v2/prims_mined.py create mode 100644 research/p104-designer-toolkit-v2/prims_role.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5551.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5551/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5551/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5565.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5565/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5565/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5580.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5580/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5580/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5599.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5599/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5599/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5612.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5612/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5612/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5612/replay_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5613.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5613/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5613/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5613/replay_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5644.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5644/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5644/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5650.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5650/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5650/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5660.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5660/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5660/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5678.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5678/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5678/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5678_af814f6f.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5678_af814f6f/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5678_af814f6f/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5678_af814f6f/replay_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5713.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5713/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5713/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5713_a5348f71.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5713_a5348f71/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5713_a5348f71/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5718.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5718/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5718/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5718_a1534ac4.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5718_a1534ac4/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5718_a1534ac4/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5739.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5739/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5739/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5739/replay_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5739_b93d749a.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5739_b93d749a/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5739_b93d749a/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5739_b93d749a/replay_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5751.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5751/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5751/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5756.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5756/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5756/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5774.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5774/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5774/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5786.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5786/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5786/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5796.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5796/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5796/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5802.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5802/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5802/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5802_9bab1ca9.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5802_9bab1ca9/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5802_9bab1ca9/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5811.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5811/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5811/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5811_883ab9ca.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5811_883ab9ca/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5811_883ab9ca/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5812.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5812/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5812/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5827.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5827/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5827/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5827_05cd36e5.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5827_05cd36e5/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5827_05cd36e5/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5907.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5907/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5907/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5907_c1cbd9e3.json create mode 100644 research/p104-designer-toolkit-v2/profiles/5907_c1cbd9e3/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/5907_c1cbd9e3/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6030.json create mode 100644 research/p104-designer-toolkit-v2/profiles/6030/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6030/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6030_772dd10a.json create mode 100644 research/p104-designer-toolkit-v2/profiles/6030_772dd10a/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6030_772dd10a/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6143.json create mode 100644 research/p104-designer-toolkit-v2/profiles/6143/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6143/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6144.json create mode 100644 research/p104-designer-toolkit-v2/profiles/6144/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6144/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6167.json create mode 100644 research/p104-designer-toolkit-v2/profiles/6167/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6167/pricing.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6167_564a076b.json create mode 100644 research/p104-designer-toolkit-v2/profiles/6167_564a076b/base_local.py create mode 100644 research/p104-designer-toolkit-v2/profiles/6167_564a076b/pricing.py create mode 100644 research/p104-designer-toolkit-v2/pscreen.py create mode 100644 research/p104-designer-toolkit-v2/real.py create mode 100644 research/p104-designer-toolkit-v2/real/p5612/pr5599-local.py create mode 100644 research/p104-designer-toolkit-v2/real/p5612/prepared573_local.py create mode 100644 research/p104-designer-toolkit-v2/real/p5612/pricing.py create mode 100644 research/p104-designer-toolkit-v2/real/p5660/pr5627-local.py create mode 100644 research/p104-designer-toolkit-v2/real/p5660/pricing.py create mode 100644 research/p104-designer-toolkit-v2/real/pr5551-pricing.py create mode 100644 research/p104-designer-toolkit-v2/realise.py create mode 100644 research/p104-designer-toolkit-v2/rebuild.py create mode 100644 research/p104-designer-toolkit-v2/reframe.py create mode 100644 research/p104-designer-toolkit-v2/relat.py create mode 100644 research/p104-designer-toolkit-v2/relay.py create mode 100644 research/p104-designer-toolkit-v2/relaycomp.py create mode 100644 research/p104-designer-toolkit-v2/reorder.py create mode 100644 research/p104-designer-toolkit-v2/retime.py create mode 100644 research/p104-designer-toolkit-v2/sedit.py create mode 100644 research/p104-designer-toolkit-v2/sens.py create mode 100644 research/p104-designer-toolkit-v2/shipcheck.py create mode 100644 research/p104-designer-toolkit-v2/shipreal.py create mode 100644 research/p104-designer-toolkit-v2/sigfuse.py create mode 100644 research/p104-designer-toolkit-v2/spansolve.py create mode 100644 research/p104-designer-toolkit-v2/split.py create mode 100644 research/p104-designer-toolkit-v2/split2.py create mode 100644 research/p104-designer-toolkit-v2/splitretire.py create mode 100644 research/p104-designer-toolkit-v2/splitvendor/NOTICE create mode 100644 research/p104-designer-toolkit-v2/splitvendor/SPLITS_5599n.json create mode 100644 research/p104-designer-toolkit-v2/splitvendor/construct.py create mode 100644 research/p104-designer-toolkit-v2/splitvendor/local.py create mode 100644 research/p104-designer-toolkit-v2/splitvendor/search.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/hubclean.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/library.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/pdata.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/runaxes.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/spec.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1027.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1031.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1048.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1049.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1050.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1051.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1052.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_1053.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_114.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_115.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_116.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_117.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_118.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/specs/dual_120.json.gz create mode 100644 research/p104-designer-toolkit-v2/subcirc/supcol.py create mode 100644 research/p104-designer-toolkit-v2/subcirc/ysink.py create mode 100644 research/p104-designer-toolkit-v2/surgery/cen.py create mode 100644 research/p104-designer-toolkit-v2/surgery/data/clus_7.pkl create mode 100644 research/p104-designer-toolkit-v2/surgery/extract.py create mode 100644 research/p104-designer-toolkit-v2/surgery/s5lib.py create mode 100644 research/p104-designer-toolkit-v2/surgery/splice.py create mode 100644 research/p104-designer-toolkit-v2/surgery/swlib.py create mode 100644 research/p104-designer-toolkit-v2/surgery/validate.py create mode 100644 research/p104-designer-toolkit-v2/synth/__init__.py create mode 100644 research/p104-designer-toolkit-v2/synth/backgen.py create mode 100644 research/p104-designer-toolkit-v2/synth/backgen_measure.py create mode 100644 research/p104-designer-toolkit-v2/synth/climbbuild.py create mode 100644 research/p104-designer-toolkit-v2/synth/compact.py create mode 100644 research/p104-designer-toolkit-v2/synth/data/backgen_dilworth.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/backgen_groups.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/helpershare_trie.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/hubgen_plan.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/hubladder_plan.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/jointfeed_plan.txt create mode 100644 research/p104-designer-toolkit-v2/synth/data/jointfeed_signal.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/kernel2_signal.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/learned_rules.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/mainhub_plan.txt create mode 100644 research/p104-designer-toolkit-v2/synth/data/partialtrie_plan.txt create mode 100644 research/p104-designer-toolkit-v2/synth/data/partialtrie_signal.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/residual_flags.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/sharedsum_signal.json create mode 100644 research/p104-designer-toolkit-v2/synth/data/sign_code.json create mode 100644 research/p104-designer-toolkit-v2/synth/flaggen.py create mode 100644 research/p104-designer-toolkit-v2/synth/frontgen.py create mode 100644 research/p104-designer-toolkit-v2/synth/gen.py create mode 100644 research/p104-designer-toolkit-v2/synth/helpershare.py create mode 100644 research/p104-designer-toolkit-v2/synth/hubgen.py create mode 100644 research/p104-designer-toolkit-v2/synth/hubladder.cpp create mode 100644 research/p104-designer-toolkit-v2/synth/hubladder.py create mode 100644 research/p104-designer-toolkit-v2/synth/hubsa.cpp create mode 100644 research/p104-designer-toolkit-v2/synth/hybrid.py create mode 100644 research/p104-designer-toolkit-v2/synth/jointfeed.py create mode 100644 research/p104-designer-toolkit-v2/synth/k2bit.py create mode 100644 research/p104-designer-toolkit-v2/synth/k2search_validate.py create mode 100644 research/p104-designer-toolkit-v2/synth/kernel2.py create mode 100644 research/p104-designer-toolkit-v2/synth/kernel2net.py create mode 100644 research/p104-designer-toolkit-v2/synth/learned.py create mode 100644 research/p104-designer-toolkit-v2/synth/learned_stats.py create mode 100644 research/p104-designer-toolkit-v2/synth/mainhub.cpp create mode 100644 research/p104-designer-toolkit-v2/synth/mainhub.py create mode 100644 research/p104-designer-toolkit-v2/synth/partialtrie.py create mode 100644 research/p104-designer-toolkit-v2/synth/repair.py create mode 100644 research/p104-designer-toolkit-v2/synth/residual.py create mode 100644 research/p104-designer-toolkit-v2/synth/rlever.py create mode 100644 research/p104-designer-toolkit-v2/synth/rlever_sign.py create mode 100644 research/p104-designer-toolkit-v2/synth/s2s.py create mode 100644 research/p104-designer-toolkit-v2/synth/sample.py create mode 100644 research/p104-designer-toolkit-v2/synth/sharedsum.py create mode 100644 research/p104-designer-toolkit-v2/synth/spec.py create mode 100644 research/p104-designer-toolkit-v2/tests/admit_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/adopt_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/alias2_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/alignbuild_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/automacro_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/backtest.py create mode 100644 research/p104-designer-toolkit-v2/tests/bit_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/bitprims_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/bulk_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/canon_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/clsfix_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/ctxmine2_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/ctxmine_test.py create mode 100755 research/p104-designer-toolkit-v2/tests/dq_diff.py create mode 100644 research/p104-designer-toolkit-v2/tests/eval_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/fastnative_test.py create mode 100755 research/p104-designer-toolkit-v2/tests/fastsites_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/framegap_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/fuzz_real.py create mode 100644 research/p104-designer-toolkit-v2/tests/gapmap_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/gen3_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/genpipe2_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/gensearch_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/genupgrade_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/handoff6030_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/handover_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/heuristics_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/ibase_fast_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/import_env_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/incr_fuzz.py create mode 100644 research/p104-designer-toolkit-v2/tests/incr_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/k2bit_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/k2frames_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/k2levers_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/k2screen_fallback_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/k2unify_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/learned_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/leverbank_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/macros_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/moves_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/nincr_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/planbuild_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/primgen_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/primmine_open_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/prims_extra_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/prims_mined_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/prims_role_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/prims_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/pscreen_test.py create mode 100755 research/p104-designer-toolkit-v2/tests/rebuild_diff.py create mode 100755 research/p104-designer-toolkit-v2/tests/regress.py create mode 100644 research/p104-designer-toolkit-v2/tests/relay_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/retain_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/retimegap_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/s2s_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/screen_smoke.py create mode 100644 research/p104-designer-toolkit-v2/tests/search_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/searchperf_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/sedit_diff.py create mode 100644 research/p104-designer-toolkit-v2/tests/shipcheck_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/side_tail_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/siggen_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/speed_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/splitretire_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/surgery_test.py create mode 100644 research/p104-designer-toolkit-v2/tests/window_test.py create mode 100755 research/p104-designer-toolkit-v2/tk create mode 100644 research/p104-designer-toolkit-v2/tk.py create mode 100644 research/p104-designer-toolkit-v2/tkcommon.py create mode 100644 research/p104-designer-toolkit-v2/tkstack.py create mode 100644 research/p104-designer-toolkit-v2/words/5545.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5551.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5553.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5553A.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5561.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5561s.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5565.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5565A.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5565old.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5569.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5580.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5599.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5599n.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5612.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5613.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5627.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5644.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5650.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5660.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5666.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5678.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5678_af814f6f.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5684.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5713.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5713_a5348f71.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5718.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5718_a1534ac4.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5739.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5739_b93d749a.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5751.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5756.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5774.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5786.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5795.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5796.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5802.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5802_9bab1ca9.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5811.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5811_883ab9ca.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5812.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5827.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5827_05cd36e5.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5907.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/5907_c1cbd9e3.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6030.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6030_772dd10a.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6143.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6144.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6145.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6167.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/6167_564a076b.json.gz create mode 100644 research/p104-designer-toolkit-v2/words/on5612.json.gz create mode 100644 research/p104-designer-toolkit-v2/wsearch/__init__.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/canon.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/drive.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/evalincr.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/guide.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/plateau.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/pools.py create mode 100644 research/p104-designer-toolkit-v2/wsearch/store.py diff --git a/research/p104-designer-toolkit-v2/.gitignore b/research/p104-designer-toolkit-v2/.gitignore new file mode 100644 index 0000000000..51f14a4838 --- /dev/null +++ b/research/p104-designer-toolkit-v2/.gitignore @@ -0,0 +1,10 @@ +# scratch state written by the tools (TK_WORK defaults to this directory) +.cache/ +out/ +jobs/ +ext/ +*.so +__pycache__/ +k2/bin/ +*.tmp +phi.net.snap* diff --git a/research/p104-designer-toolkit-v2/MAP.md b/research/p104-designer-toolkit-v2/MAP.md new file mode 100644 index 0000000000..ef7d71e635 --- /dev/null +++ b/research/p104-designer-toolkit-v2/MAP.md @@ -0,0 +1,252 @@ +# MAP -- command reference and module map of the P104 designer toolkit + +Paths are relative to this directory. Labels: LIVE (wired into `tk`), PLUGIN (screen reachable via `tk pscreen`), LIBRARY (imported by others), RESEARCH (model or negative result), DEAD (superseded). + +## 1. Purpose and how to test +`tk` is the one tool for working on P104-family words (the integer-multiplication-bounds line; kappa is the exact crossing of the word's invoice). It adopts a swarm PR as a *verifier profile*, prices and legality-checks any word exactly, screens a word with every known move class (retime, hand-off, split, the primitive basis P0-P15, macros, context-mined windows), runs searches and from-scratch generators, and decides whether a generated word is shippable. It imports the single sources of truth in `../infra/` (`legal.py`, `price_exact.py`, lattice code) and the PR's own verifier stack (via `tkstack`/`accept`), so a fix there is a fix here. Entry: `toolkit/tk` (bash wrapper) or `python3 toolkit/tk.py`. Words are paths to `WORD.json[.gz]` or aliases (`words/.json.gz`, e.g. `5827`, `5811`, `5907`-profile family). + +Tests (Python >= 3.12 with numpy): +- `tests/regress.py --fast` (HYGIENE, Oct 27): <=2 min single core (~80 s measured idle): price x5, fastnative, nincr, gensearch, pscreen registration, `screen_smoke --fast` (every screen still EXECUTED, 0.4x budgets, ~37 s), primmine/clsfix/learned/shipcheck, canon_test, import_env_test --fast, check x5 + 3 localised mutants. It is a SUBSET of --quick, not a replacement; run --quick before any ship/PR claim. Add `--time` to any regress run to print the seconds each check took (profile). --quick profile (idle, s): FASTSITES 95, screen_smoke 60, incr 36, admit 36, synth FRONTGEN/helper generators ~150 total, 4x accept ~58, split 32, fastnative 15, check --native 12; typically 9-10 min idle, more under load. +- `tests/regress.py --quick` (stdlib-fast, now ~90 checks incl. admit, incr, nincr, prims, macros, ctxmine, screen_smoke --quick; minutes, not the 20 s of the README era). Other flags: `--solver` (needs ortools), `--pricer`, `--reorder`, `--split`, `--split-full`, `--real 5551,5553,5561` (real stack, ~200 s/word), `--full`. Default = quick+solver+pricer. +- Per-module tests live in `tests/*_test.py` (one per module); heavy ones take `--heavy`/`--full`. `tests/*fuzz*`, `dq_diff.py`, `sedit_diff.py`, `rebuild_diff.py` are differential checkers against the reference path. + +## 2. Command reference (`tk --help` lists 31 subcommands; global `--profile NAME` overrides profile resolution) +Heavy work (CP-SAT, real stack) is queued through `$TK_HQ` (<=4 jobs machine-wide); add `--wait` (bounded poll) or `--inline`. Never wrap in shell loops. Details of the first 12 are in README.md. + +| cmd | one line | key flags | +|---|---|---| +| `price WORD` | exact kappa (0.4 s, cached by sha), side constraints, budgets | `--real` (unmodified real stack via hq, ~4 min) `--json` `--no-cache` `--wait` | +| `check WORD` | legality oracle, ALL violations localised; exit 0 = legal | `--native` (every frame pair; use hq) `--native-ref` (unmodified vendor kernels, ~150 s, no pair cache) `--exact` `--stack` (also run the profile's own local.py; reports MODEL_GAP) `--max N` `--json` | +| `retime WORD` | exact lattice retime of a fixed circuit (CP-SAT) | `--free starts,finals,stops,mainstops,mainends` (required) `--pin mainstops` `--tl` `--out` | +| `reframe WORD` | exact frame re-assignment (`frames.assign`), never worse than the input | `--k` `--maxm` `--tl` `--out` `--inline` | +| `evretime WORD` | event-level retime, free ADD placement | `--k` `--maxm` `--tl` `--out` | +| `reorder WORD` | event-ORDER + frame retime (commuting events swap) | `--window LO HI` `--k` `--maxm` `--tl` `--inline` | +| `handoff WORD` | successor hand-off screen (tail retarget, multi-partner, scratch, relabel) | `--apply` `--classes` `--top` `--threshold` `--selftest` | +| `split WORD` | #5599 independent helper splits, screen + greedy apply | `--apply` `--max` `--public-cap 750\|0` `--event-cap 26000` `--free-decay` `--list K` | +| `split2 WORD` | two-boundary split (#5718) -- movekit class | class flags below | +| `ibase WORD` | paid interior bases R=I+qE_ab (#5678) -- movekit class | class flags below | +| `a2x WORD` | A2 paid rank exchange (#5643/#5650) -- movekit class | class flags below | +| `blockmove WORD` | block reframe to a lower-dim chart (#5739) -- movekit class | class flags below | +| `relay WORD` | relay/temporal reroute by exact span (#5713/#5605/#5612; spansolve) -- movekit class | `--opt terms=4 sole=1 nbest=2 engine=dfs\|cpsat ids=i,j free=1` | +| `diff A B` | what changed between two words (events aligned ignoring frames, invoice histograms) | `--json` | +| `sens WORD` | kappa marginals of the exact invoice | `--calls N` `--json` | +| `hops MATRIX` | delivery-program verifier/counter (HOPILP/SIGNHOP) | `--signed` `--program` `--points` `--recomb` | +| `pricer` | rank-r owned-pivot pricing (PRICE8); `--synth` rank-8 ceiling | `--pivots` `--synth K` | +| `gen [full0]` | S4GEN/GENX hub partition of window B (workspace only; `TK_WORKSPACE`) | `--realise` | +| `decompile WORD` / `realise DAG` | word <-> value DAG round trip (dag.py) | `--schedule exact\|lazy\|FILE` `--drop-helper H,..` | +| `adopt PR` | derive + validate + register the verifier profile of a swarm PR (`profiles/PR.json`) | `--head SHA` `--pkg DIR` `--alias` `--no-accept` `--list` `--refetch` `--json` | +| `accept WORD` | real `price.run` acceptance with cached native pairs (seconds when warm) | `--native-ref` `--json` | +| `eval WORD...` | bulk pipeline: check --native + accept + price + screens iterated to a fixed point | `--jobs` `--screens a,b,..` `--rounds` `--accept full\|fast` `--no-pipeline` `--candidates DIR --threshold K` `--results F.jsonl` `--tl` `--word-timeout` | +| `bulk CORPUS_DIR` | BULKEVAL: whole-corpus table. Per word: price, check --native, shipcheck (base = newest adopted profile with the word's public count, else 6030), gapmap vs #6030 (per-side R0 ledger), anatomy --no-lifetimes -> append-only `results.jsonl`, resumable by content sha; writes `results.summary.md/.csv` sorted by kappa | `--out F` `--jobs 2` `--steps a,b` `--only ids` `--force` `--summary-only` `--lifetimes` `--ref 6030` `--hq` (ONE hq slot, 2 worker procs) | +| `plateau WORD` | neutral-network plateau walks + screens from each point | `--measure` `--budget CPUH` `--seed` `--dip` `--run-id` `--cpuq` | +| `search` | greedy\|beam\|anneal\|lns over plugin classes + screens; SQLite store; resumable | `--from` `--strategy` `--classes` `--budget` `--evaluator incr\|full` `--relax` `--frontier` `--report` `--s2s` `--cpuq` | +| `synth` | word synthesis from specs: `--spec-from/--gen/--roundtrip/--random N`, `--front-gen` (FRONTGEN) with `--back star\|gray\|dilworth\|grouped`, `--helpers ladder\|shared\|hub\|mainhub\|joint\|ptrie\|cse\|k2\|learned`, `--no-gap`, `--strict-bounds` | `--anchor` `--seed` `--store` `--cpuq` | +| `gensearch` | spec-space search over the generator (random\|evo\|halving) | `--strategy` `--minutes` `--report` `--plan` `--cpuq` | +| `genpipe SRC` | generate -> P14 -> P15 -> P2/P3 -> frames -> compact -> admit, never-lose stages | `--stages` `--budget` `--stage-tl` `--run-id` `--no-relax` `--cpuq` | +| `shipcheck WORD` | is a generated word shippable as a package; literals to change + precedent | `--base 5827` `--real` `--json` | + +Movekit class flags (`split2 ibase a2x blockmove relay`): `--apply` (greedy apply best edits, write `--out`), `--steps`, `--max-sites`, `--shard i/n`, `--results F`, `--edit JSON` (apply exactly one edit, print exact kappa), `--list N`, `--exact-top N`, `--opt k=v`. + + +## 3. Module map by layer +Notes column = file with the details (all under toolkit/). "Status" = key result or state at Oct 27. + +### 3.1 Verification, pricing, profiles +| file | purpose | status | +|---|---|---| +| `check.py`, `../infra/legal.py` | fast all-violations legality oracle | LIVE; `legal.py` touched once (register ids in two detail strings) | +| `price.py`, `../infra/price_exact.py` | exact invoice -> Decimal-50 root, tail constraints, budgets | LIVE; matches published claims to 1e-14 | +| `real.py`, `accept.py`, `tkstack.py` | real stack; seconds-warm real `price.run`; PR's own vendored stack driven by data profile | LIVE | +| `adopt.py`, `adopt_validate.py`, `profiles/*.json` | `tk adopt`: fetch PR head read-only into `TKAUDIT/src/g.git`, derive + validate profile | LIVE; 22+ adopted profiles (5551 .. 5907, `bit5512`, `bit5708`) | +| `tkcommon.py` | paths, hq submit, profile resolution, native-pair selection | LIVE | +| `fastnative.py`, `fastnative_cmp/` | numpy replacement of the vendored native pair checker, bit-identical | LIVE default; `--native-ref` = reference | +| `admit.py` | exact ADMISSIBILITY oracle (events, scalar, raw, alpha/gamma/delta, tail) beyond legality | LIVE (regress, eval) | +| `shipcheck.py`, `shipreal.py` | shippable-as-package check; derived literal-patched real stack | LIVE; no generated word shippable as-is | +| `diff.py`, `sens.py`, `hops.py`, `pricer.py`+`pricer/` | diff, marginals, delivery programs, rank-r pricing | LIVE | +| `dag.py`, `decompile.py`, `realise.py` | value DAG round trip | LIVE; no kappa | +| `bitword.py`, `bitval.py`, `bitadapt.py`, `bitworker.py`, `bitmut*.py` | BIT-side (G20) word model, exact value, adopt/price/accept/check, isolated PR-stack runner, oracle-vs-PR mutant validation | LIVE for BIT; 841/841 mutants agree | + +### 3.2 Incremental evaluation +| file | purpose | status | +|---|---|---| +| `incr.py` | IncrWord: ~128-event chunks, `try_edit/commit`, 7-9 ms/edit vs 220-450 ms full | LIVE; fuzzed by `tests/incr_fuzz.py` | +| `native/nativecore.c`, `native/nincr.py` | C inner loop of IncrWord, bit-identical | LIVE but OFF unless `TK_NATIVE_CORE=1`; rebuild `python -c "import native.nincr as n; n.build(True)"` | +| `dq.py`, `movekit.py` (`quick`/`quick_full`), `sedit.py` | delta-quick site pricing; plugin framework; edit objects | LIVE; `quick_full` is the reference | +| `wsearch/evalincr.py`, `pools.py` | incr evaluator hook + incremental site pools for search | LIVE (`--evaluator incr` default) | +| `frames.py` | the one exact frame-assignment routine (`tk reframe`, used by genpipe, realise) | LIVE | + +### 3.3 Move primitives (value-preserving; MOVEs are re-derived by `View.rebuild`; frames are parameters) +Defined in the original lane notes (not shipped) (sec. 0/1, with the 20-row PR decomposition table), the original lane notes (not shipped). +| tag | semantics (one line) | file | notes | +|---|---|---|---| +| P0 | free normalisation: coalesce equal-(t,s) ADDs, drop zeros, cancel inverses; P0' sibling merge | prims/prims_extra | PRIMITIVES, MOREPRIMS | +| P1s / P1c | strict commute / move an ADD past a conflicting event inserting the Steinberg correction (`[A,B]=[B,A,C]`); SCALE/COPY/INIT/CLEAR are barriers | `prims.py` | PRIMITIVES | +| P2 | re-time free variables: event chart, helper start/final, stop collapse | `prims.py`, retime/evretime | PRIMITIVES | +| P3 / P3x(P3') | conjugate a window by T=I+qE_ab (exact inverse) / inject-and-undo with the undo SOLVED in available values (spansolve) | `prims.py`, `ibase.py`, `relay.py` | PRIMITIVES | +| P4 (r/t/c) | register split (same/distinct bases), temporal hand-off, copy chain; merge not implemented | `split.py`, `split2.py`, `handoff.py` | PRIMITIVES | +| P5 | move a same-chart block to a new lower-dim chart | `blockmove.py` | TKMOVES | +| P6 | inject + undo with undo solved (joint/single/exact relay modes) | `prims.py` -> `relay.py` | MACROS | +| P7 | RETIRE: public helper -> owned scratch (role change) | `prims_role.py` | P7ROLE, SPLITRETIRE | +| P8 | owned courier/bridge: `acc` (accumulate group) and `ret` (return) | `prims_extra.py` | MOREPRIMS, P8GAP (KMAX bug fixed: #5811 has a 6-ADD group) | +| P9 | SCALE hop (P1 through SCALE with coefficient rescale) + COPY/SCALE fuse | `prims_extra.py` | MOREPRIMS | +| P10 | owned-lifetime chart / main endpoint reframe | `prims_extra.py` | MOREPRIMS (all neutral) | +| P11 | split one ADD into two placed apart | `prims_extra.py` | MOREPRIMS (null) | +| P12 | Weyl exchange of two co-framed registers over a window (3 transvections) | `prims_extra.py` (`sites12`) | MOREPRIMS | +| P13 | late-cut hand-over with solved compensation (generalises split2; #5786 mechanism) | `handover.py` | LATECUT | +| P14 | helper alias: redirect a victim's reads to an equal-X-content keeper | `alias_core.py`, `prims_alias.py` | ALIAS | +| P15 | P14 jointly with re-ordering of the readers' source reads | `prims_alias2.py` | SRCREORDER | +| PM1/PM2/PM3 | fused mined macros: Steinberg move (PM2: two) then P8 courier on the touched region; PM3 = P3 conjugation fused with the P8 sites of the conjugated window | `prims_mined.py` | PRIMMINE | +| PM4 | read redirect through a transvection pair `R=ADD(t<-x,a); x+=b y; y+=c x (bc=-1)` => `W1;W2;ADD(t<-y,a/c)` (half Weyl, the one non-basis mined rule) | `prims_mined.py` | PRIMMINE, GADGET2 | +| RSPLIT | remote Steinberg split: a read A moves earlier, its correction C lands anywhere the source is unchanged (even inside an owned lifetime). Explains #5827 (+5.8048e-7) | `automacro_rsplit.py` | AUTOMACRO | +| CTX windows | real-context window superoptimisation (H/T/SH/CC hops; CJ P3-conj, redirect, coef split/merge in v2) | `ctxmine*.py`, `ctxmine*_lift.py`, `*_scan.py` | CTXMINE, CTXMINE2 | +| classifier | `cls.search` over all linearisations + reverse; basis {P0,P1s,P1c,P3,P6,P8,P9,P12-half} complete for programs <=7 events; GADGET2: all 18 cap-limited rules decompose | `ext/PRIMMINE/cls.py` (outside toolkit) | PRIMMINE, CLSFIX, GADGET2 | +Other: `autodec.py` + `automacro_mine.py` (decompose real base->PR diffs into primitives, mine recurring macros; no macro recurs outside P5-repeat/P8-bundle/RSPLIT -- AUTOMACRO), `splitretire.py` (P4+P7 macro ceiling +1.66e-4 gross, net 0 -- SPLITRETIRE; RESEARCH), `spansolve.py`/`relaycomp.py` (exact span solver, compensated relay layer -- TKRELAY). + +### 3.4 Macros and screens +| file | purpose | notes | +|---|---|---| +| `macros.py` | macro library + guided primitive search (P6 inject-undo, ...) | MACROS | +| `pscreen.py` | registers every primitive/macro as a `tk eval` screen; sets listed in sec. 2 | P8GAP | +| `eval.py` | bulk pipeline, fixed-point screen rounds, candidate files | TKBULK | +| `ibase.py`, `a2x.py`, `blockmove.py`, `split2.py`, `relay.py` | movekit classes (plugin protocol `name/prepare/sites/scalars`; `update_sites`, `span`, `defer_regen` hooks) | TKMOVES, TKRELAY | + +### 3.5 Searches +| file | purpose | status | +|---|---|---| +| `wsearch/drive.py`, `canon.py`, `store.py`, `guide.py` | `tk search`: greedy/beam/anneal/lns, canonical trace hash, SQLite lineage store | LIVE; #5756, #5718 are local optima of the four movekit classes | +| `wsearch/plateau.py` | `tk plateau` neutral-network walks | LIVE; 0 improving on #5811/#5812 (~6.9k neutral steps, scoped) | +| `bitsearch.py`, `bitscreen.py`, `bitprims.py`, `k2bit_search.py` | BIT-side search/screens/primitives (zrel/p1c/p0/pair), k2net walk on BIT | RESEARCH: no legal improving BIT edit | + +### 3.6 Generators (`synth/`, `tk synth`, `tk gensearch`, `tk genpipe`) +All from-scratch words so far reach ~.0016 (about 51% of the frontier) and none is admissible under strict literals. +| file | what | result | +|---|---|---| +| `spec.py gen.py repair.py sample.py` | spec -> DAG -> word, repair, knob sampler | roundtrip OK; best = the anchor | +| `frontgen.py`, `backgen.py`, `backgen_measure.py`, `data/` | unhinted front end + dim-0 junk; back-end sign network (star/gray/dilworth/grouped) | star .0010212 | +| `helpershare.py`, `hubgen.py`+`hubsa.cpp`, `hubladder.py`+`.cpp`, `mainhub.py`+`.cpp`, `sharedsum.py`, `jointfeed.py`, `partialtrie.py`, `flaggen.py`, `hybrid.py`, `climbbuild.py` | helper-network designs (sharing, hubs, ladders, mains-as-hubs, linear CSE, joint feeders, partial-root tries, flag plans, swarm helpers + generated mains, constructive climbs) | best .0015482 (ss2); hybrid impossible as a gain; climbbuild stays 0.29-0.38 entries/R0 vs swarm 0.68 | +| `residual.py`, `rlever.py`, `rlever_sign.py`, `learned*.py` | residual carriers, signal-count lever (r*=8), mined design rules | R0 law input; rules fix skeleton not value layer | +| `s2s.py` | state-to-state window synthesis; also the event-budget compaction pre-pass (K2PUSH: frees ~5k events on #5827/candidate) | kappa-neutral | +| `compact.py` | post-pass event/scalar compaction | LIVE in genpipe | +| `gensearch/` | spec-space search | spec space exhausted ~.00125 | +| `genpipe.py` | pipeline orchestration | best jf_V0 .0016073 | +Generated-word results: COMPRESS (generic rewrites +0.2-0.5% only), GAPMAP (component attribution of generator vs swarm gap), UNITGEN (unit comparison P104 vs P108/P112; model), E4CONV/ROOTARCH/SIGNCODE(2)/FRAMEAUDIT/NETLB/MAINLADDER/SIGNOBS/LATTICEDESIGN/RELAYLAT (lower-bound and architecture analyses; RESEARCH, no code in tk). + +### 3.7 k2net (rendezvous-program SA kernel; engine is C++ outside toolkit) +| file | purpose | notes | +|---|---|---| +| `ext/KERNEL2/{k2.cpp,k2net.inc,k2search.inc,k2grow.inc}` | engine: state = explicit rendezvous event program; K2_NET/K2_SEARCH=census\|sa; weights K2S_W; `k2grow.inc` only with `-DK2GROW` | KERNEL2, K2SEARCH, BLOCKGROW | +| `synth/kernel2.py`, `synth/kernel2net.py` | python glue + net encode/decode (`helpers: k2`); `kernel2_test.py` encode test (#5811 R0 7988.73) | KERNEL2 | +| `synth/k2search_validate.py` | net -> word realiser, legal, exact contract replay, price_exact | K2SEARCH | +| `ext/K2PUSH/` | event-pressure (EVPEN/EVT), HOP, multi-reader variants; binaries `k2p*`, `k2h*` | K2PUSH | +| `toolkit/k2/k2phi.inc` (+10 hook lines in k2search.inc, `k2/k2phi.hooks.patch`) | law-derived potentials + shaped k2 search, all runtime flags, DEFAULT OFF (flag-off bit-exact): F0..F5 rung slack/free rungs/blocked/drain/event slack/R0; D0..D3 delivery readiness (mvKill's precondition); (a) `K2S_PHI=1 K2S_PHITAU` neutral tie-break, (b) `K2S_PHIA` annealed shaping, (c) `K2S_PHILA=200` READY-KILL LOOK-AHEAD (RNG-paired with blind, takes a ready rung kill only if exact kappa rises), (d) `K2S_PHISEG` segment tie-break on D; logging `K2S_FLOG`/`K2S_FSNAP` | the original lane notes (not shipped). LIVE flags; (c) is the only arm that beats blind (time-to-first-improvement, 5/65 pairs earlier, 0 later; +15% wall) | +| `toolkit/potentials.py` | word-level potentials for generator look-ahead: `score(w)` (rung slack == C++, event slack, lifetime/idle/handoff/market R0 ceilings, shared sub-sums/brackets), `side_slack(w)` (admit gamma/delta), `delivery(w)['D0_ready']` (exact kill-ready R0, the look-ahead term) | the original lane notes (not shipped). LIBRARY (lifetime/idle/market read 0 on dim-0-load/dim-9-restore words; see notes) | +Result: #5811/#5827 are strict local optima of every single k2 move; plateau SA found +5.22e-7 (shipped as #5907). + +### 3.8 BIT side (G20 words) +`bitword.py` (model, oracle, emit), `bitval.py` (exact value), `bitadapt.py` (adopt/price/accept/check, profiles `bit5512`, `bit5708`), `bitprims.py`/`bitsearch.py`/`bitscreen.py`, `synth/k2bit.py` + `k2bit_search.py` (k2net encode gap 0 on #5708/#5512; moves stay on the plateau), `bitceiling.py` and `mrf_ac.py` are scratch scripts (no docstring, hard-coded paths) -- DEAD. Notes: BITADAPT, BITPRIMS, K2BIT, CTRL2BIT (controller e=2 KILL, scoped sampled UB). + +### 3.9 Automation and ship tooling +- Stale/duplicate files: `*.bak-*`, `prims_alias2.py.b`, `tk.py.bak-*`, `regress.py.bak-*` are editing backups -- DEAD, do not import. + +## 4. Invariants and gotchas +1. **Env guard.** Search-mode switches `TK_FREE_BOUNDS` and `TK_NATIVE_CORE` must come only from the user's environment or a search driver's own `main`. `tk.py` snapshots both at start and `_restore_user_env` after parser/screen registration, because a leaked `TK_FREE_BOUNDS` once made `tk check` skip inventory bounds. Convention for new code: no env mutation at import. Reality check: `alias_core.py`, `macros.py`, `prims_mined.py`, `splitretire.py` still do `os.environ.setdefault('TK_FREE_BOUNDS','1')` at import time (tk.py's restore neutralises it for `tk`; direct `import` in your own script does not). `automacro_rsplit.py` guards with `__name__=='__main__'`, `prims.py`/`pscreen.py`/`ctxmine*_scan.py`/`genpipe.py` set it only in their CLI entry. +2. **Profile resolution** (`tkcommon.profile_of`): `--profile`/`TK_PROFILE` > adopted data profile whose word FINGERPRINT (sha1 of initial/final/program) equals this word (EXACT match first, so adopting a newer PR never changes how an older PR word resolves) > data profile with `auto` > built-in legacy family (`default`, `p5599`, `p5612`, `p5660`) > newest adopted profile of the same family (public, owned_fields, retired roles) > `default`. A word of an unknown family is no longer silently `default`. Fingerprints are only known for aliases that exist in `words/`. Data profiles drive `legal.profile_params` through `TK_VERIFIER_PROFILE`; `use_profile` restores the env. +3. **Bounds are conventions, not SPEC.** Event cap (26000 in all adopted profiles, convention A41), scalar cap 10^7 (coupled to raw `18*10**7`), public/owned inventory pins (they change every few PRs) and tail literals are package literals. `TK_FREE_BOUNDS=1` (infra/legal.py:52) skips event/inventory bounds for search; a shipped candidate MUST be re-checked under the real profile (`tk check`, `tk accept --native-ref`, `tk shipcheck`). Only the pending #5830 proposes a raised event bound (27504); CAPVALUE: our #5907 word is shippable as-is. `admit.py` separates REAL constraints (alpha, gamma, delta < 1, theorem) from literal ones. +4. **Fast native vs `--native-ref`.** Default native pair check is `fastnative` (numpy, bit-identical on 7 words, pair cache `.cache/nativepairs/`); `--native-ref` / `TK_NATIVE_REF=1` runs the unmodified vendor kernels (~150 s, no cache) and is the standard for ship claims. The pair cache was poisoned once by `incr_fuzz.py`'s FakeN (124 fake entries; removed -- the original lane notes (not shipped)): never let fuzzers write the shared cache. +5. **Exact vs model.** `retime`/`evretime`/`reorder` objectives are linearised kappa; the REPORTED kappa is always the exact re-price. RETIMEGAP: separately differenced T/P weights created ~3e-4 curvature artefacts (fixed); treat a model gain with exact gain 0 as an artefact. `quick` is a filter, `movekit.evaluate`/IncrWord is the judge; unpriced greedy can end illegal after 100+ accepts (SRCREORDER). +6. **R0 law.** helper net weight R0 = k*(D ln D - sum r ln r); empirical `1/kappa = 130.27 + .02364*(R0eq + 380*(owned_paid-56))` (ENDANATOMY refit, 11 words, kappa +-5e-5 rel; supersedes c=131.2 which absorbed #5907's staging), where R0eq = public tax + STAGED OWNED-DESCENT ENTROPY. **Owned staging law (OWNEDRANK):** the invoice charges every owned MOVE of rank r at the public weight (P_r += 18, no credit), so a staged owned descent costs its jump entropy `D ln D - sum r_i ln r_i` in R0-eq even though paid units stay 56 (splitting a rank-7 descent 4+3 costs 4.78, 4+1+2 costs 6.69; #5907 total 40.15 = 8 descents/20 moves; r104 0; m2 9.56); `gapmap.owned_staging` computes it and its 'owned (O)' row now equals it (was the per-register-id tax, 6.17 on #5907). Test: `tests/gapmap_test.py` (law vs `tk price` on 5907/r104/m2, 2e-4). A gap table that omits it misreads our-vs-swarm by 40 R0 and the levels of old-law predictions by up to 3e-3; so dkappa/dtax ~ -kappa^2*.02364 ~ 2.3e-7 per tax unit at the frontier. One OWNED rank unit costs ~300 tax units (~+2.4% kappa per owned rank), i.e. owned relays are ~100x dearer than helpers. A MODEL, calibrated on 3-4 points; use it to rank designs, then price exactly (HUBGEN, LATTICEDESIGN). +7. **Event cap.** Every generated word exceeds 26000 events (36-63k; compaction gets K2 best to 28.2k). Extra events are the binding resource for k2/SA moves (BLOCKGROW: cap 25999/26000 starves SA; HOP/s2s free ~5k events). Each P8 costs +3 events, P7 +4..6, P12 +3..4, relay edits +3..30. +8. **Classifier linearisation.** `cls.nf` keeps only the lex-min topological order of the commutation trace; P1c/P3 windows must be contiguous, so classify over ALL linearisations (cap 200) and both directions (fwd/rev) -- CLSFIX. Earlier "unresolved" counts (192) were an artefact; the original lane notes (not shipped) top block supersedes the lower counts. +9. **Blind-spot lessons.** Site finders with small caps miss real tricks (P8 KMAX=3 vs #5811's 6-ADD group; prims window indexing is S-index, not program-index -- use `prims.prog_to_S_window`). Prepared573 words (#5612/#5613) are refused by View/movekit/dag; #5751 (767 public) violates the shared 750 bound: use `--relax`. #5795 is not adoptable (adopt fails 'Role index'). Words in `words/` can be older heads than the PR (words/5565). +10. **Owned operands.** `prims.p1_apply` refuses ADDs with owned operands (`pub` guard) -- why plain `prims` cannot reach RSPLIT; owned registers are P1 barriers; step 1 of RSPLIT is exactly neutral so greedy never takes it. Kappa is not monotone along a decomposition (dips of 7e-7 precede gains). +11. **Hygiene.** Heavy jobs run directly (or through the optional `$TK_HQ` wrapper); python/CP-SAT thread counts capped; PR-stack runs use isolated `python3.12 -I -B`; GitHub access is read-only (fetch into `TKAUDIT/src/g.git`, no worktrees). +12. **Negative results are scoped.** Each NOTES verdict names its construction (e.g. "greedy per-reader builders", "single-step", "sampled UB"). Do not read "dead" as "impossible"; read the scope line first. +13. **Side check tail (TKHYG2).** Never call `X.side` directly: use `tkcommon.side_of(T,P,profile_of(w)[1])` so the adopted (c,b,u) tail is applied (legacy 17/18/.2 gives false FAIL on #5907/#5827). Converted: price, movekit, incr, evalincr, split, legalize, retime, evlat, relat; guarded by `tests/side_tail_test.py`. +14. **gapmap attribution (TKHYG2).** `gapmap.py` default is the jump-level CUT table (R0 of jumps ending <=c vs >c, cuts 3..7); the mid-dim band table (bottom/centre/top) is not a cut and misattributes - it is behind `--bands`. Older the original lane notes (not shipped) band rows carry that caveat. `tests/gapmap_test.py`. +15. **First non-swarm word (B0POLISH, Oct 27).** Three screens silently refused SIGFUSE b0 (and would refuse any from-scratch word): (a) `tkcommon.side_of` applied the adopted PR tail (c,b,u) -> side FAIL on every site, so prims/macros reported "0 exact-legal"; with `TK_FREE_BOUNDS=1` it now falls back to `X.tail_feasible` (best free tail) and tags `free_tail`; (b) `eval.verify` rejected the word ("side/native/crosscheck failed"): under `TK_FREE_BOUNDS` it now judges the side test by `admit.best` (new-value literals allowed; `free_literals` in the record); (c) `--accept full` runs the real stack and always fails "Public inventory bound" on a new-pin word: use `tk eval --accept fast --no-accept-each`. Open (k2/ not edited by this lane): `k2/screen.py` discards a legal SA gain when `tk accept --native-ref` says "Public inventory bound"; workaround `K2SA_NATIVE_REF=0` (then vet with `tk check --native` + shipcheck). Also `tk handoff` on a 23k-event word exceeds eval's subprocess timeout (eval records ERROR, other screens continue). +16. **k2sa native-ref convention fallback (GEN2POLISH, Oct 27).** `k2/screen.py`: when `tk accept --native-ref` refuses a k2sa gain ONLY with the public/owned inventory literal (`inventory_only(na)`; a convention on new-pin words, gotcha 15), the screen falls back to `native_check_free(path)` = `tk check --native` in a child with `TK_FREE_BOUNDS=1`, accepted iff exit code 0 AND `: LEGAL (` AND `0 bad` AND no `ILLEGAL` (the first version tested `'LEGAL' in stdout`, which also matches `ILLEGAL`). Any other refusal (native pair, side, crossing) still rejects. `K2SA_NATIVE_REF=0` is no longer needed. Test: `tests/k2screen_fallback_test.py` (in regress --fast). `tk gen2 --stages polish` (the original lane notes (not shipped)) = purex2 -> k2sa -> eval(evretime,retime) on o1y, TK_FREE_BOUNDS only in the child env. +17. **handoff B-class frame tracker (SPEED, Oct 28).** `handoff.enumerate_B` tracked register frames from MOVEs only; owned registers get their frame from INIT (and lose it at CLEAR), so on every frontier word since #5811 (5811, 5827, 5907, 6030 + head variants) it hit `fr[None]` and crashed -> `tk eval` recorded 'no applied word' and the hand-off screen silently contributed nothing. Fixed: INIT/CLEAR tracked, frameless sources skipped; candidates unchanged on the 39 words where the old code ran. Test `tests/handoff6030_test.py` (`tk eval 6030 --screens handoff`, rc 0; in `regress --quick`). Lesson: a screen whose subprocess fails must be visible in the eval record as an ERROR, not as 'no output'. + +## GENPIPE2: `genpipe2.py` + `gen2/` (copies of RELAYTOP, SIGFUSE/B, JOINTFRAMES, MARKETS, PUREX code; lane dirs untouched). +- Pipeline (data flow is not linear): relaytop -> allh_d3 (.0025498, stand-alone ancestor) | routeb -> b0 (.0029001; 8 roots as sources + sigfuse.fuse_share) -> ylate -> yl1 (.0029031) | order (route B with sink-grouping order 51,30,45,75,120,102,85) -> o1 (.0029461) -> ylate -> o1y (.0029494) | purex2 on **o1** (`--dims 4,8 --xstops`) -> r104. Late births (ylate) and early ends (purex) are alternatives today: r104 is the pre-ylate base. polish (k2sa) is optional and not wired. +- Stage contract: input word (or none) -> `OUT/NAME.json.gz` + `NAME.canon.json.gz` + one line in `OUT/stages.jsonl` (exact `tk price` kappa, file/content/canon sha, events, side, params); `--expect` fails on a kappa difference > 1e-13. Identity of a word = sha256 of the decompressed JSON (gzip headers carry a time stamp, so file shas of regenerated words differ). +- Gotchas: allh_d3 needs the SORTED direction list (the b0 order gives .0025422); r104 comes from o1 not o1y; gen2 modules import each other by bare name (driver uses subprocesses); env (TK_FREE_BOUNDS) only inside main. +- **Conventions are not constraints.** Public bound (968 here), event cap 26000, scalar cap and tail literals are package conventions (sec. 4.3); the real checks on a generated word are: VALUE (symbolic replay, undelivered []), NATIVE (fastnative / `--native-ref`, 0 bad pairs), SIDE at an admissible tail (`tkcommon.side_of`/`admit.best`, sec. 4.13/4.15), and `tk shipcheck` (r104: needs new-value literals, admissible True). `tk check` flags only the public-inventory literal on these words. +- Tests: `tests/genpipe2_test.py --fast` (stage smoke, in `regress.py --fast`) and `--chain` (full chain bit-exact, in `--quick`). + +## SURGERY tooling (Oct 27, SURGPREP. TOOLING only, no kappa claim +Multi-level edits that rebuild one octet's bottom-to-top column of a frontier word (base: #6030 = `words/6030.json.gz`, kappa .00312581155791). `toolkit/surgery/` (no env at import): +| file | role | +|---|---| +| `swlib.py` | octet-owner partition of all public registers (14 octets + POOL), event classification, exact invoice slice + R0 (tax) share, value fingerprints (`trace`, `xparts`) | +| `extract.py WORD --octet K\|pool [--out COL]` / `--summary` | column file (registers, internal events with original index t, interface events in/out with x-part + numeric fingerprints, local frame table, accounting) | +| `splice.py WORD COL --octet K [--out NEW] [--validate] [--retarget-inventory]` | re-wire a (rebuilt) column into the word; `tk check` oracle with the base profile pinned, exact kappa/side/budgets, interface pins, inventory deltas | +| `validate.py BASE NEW --column COL` | SPAN5 x-part span law (dims 1..8) + JR chart law, restricted to the frames the column visits (base vs new) | +Test: `tests/surgery_test.py [--fast\|--full]` (in `regress --fast`): extract+splice of the unchanged column reproduces #6030 BYTE-EXACTLY (canonical bytes, kappa, 0 pin mismatches) for all 14 octets + pool; relabel/shrink layouts; negative control. Pin: profile 6030 fixes public=770, so any change of the register count fails `tk check` unless `--retarget-inventory` (shipcheck literal). + +## BULKGEN additions (Oct 28, BULKGEN: `tk rebuild` and `tk anatomy` = the bulk-eval foundation (TOOLING, no kappa claim) +`toolkit/alignbuild/` consolidates the five pinned rule builders as COPIES (lane dirs untouched) behind one interface; nothing imports a lane dir, no env at import. +| file | was | role | +|---|---|---| +| `skeleton.py` (+ `routing.py`) | SKELORIGIN `sb.py` (COMPOSE copy) + YROUTE `yb.py` | skeleton park stops of one low-reader octet, then yb rebuilds the Y reads (fused: `routing` selects the skeleton steps) | +| `hubs.py` / `hubs_owned.py` | HUBRULES `hubbuild2.py` / OWNEDHUB `hubbuild3.py` | octet-frame hubs O_r (public; `--owned` for 240/243/1090/1091) | +| `markets.py` / `markets_full.py` | MKTCOMPACT `fullbuild.py` / FULLWORD `fullbuild3c.py` | dual-cone markets G_r with the compact tail (10 / all 14 duals, gate+proxy flags for f1031/f117) | +| `sigside.py` | COMPOSE/SIGPIN `sigb.py` | root feeds / reads (`--freebounds`: convention literals only) | +| `rp.py life.py mktbuild.py fcls.py tiling.py data/y1,y4.pkl` | SURGERY, ALIGNLAW, SKELCLASS, SKELGEN, YREADORIGIN | libraries and the (source, reader-Y) incidence, copied | +| `api.py`, `data/manifest_6030.json` | new | `kappa_of`, `step`, `rebuild`; the plan (octets/frames/duals/roots, order, flags) | +| `anatomy_core.py`, `endanat.py` | ALIGNLAW life/attrib, ENDANATOMY anat, HUBCOST ledger, gapmap | per-side ledger functions | +- `tk rebuild WORD [--sides skeleton,routing,hubs,markets,signal] [--out F] [--workdir D] [--manifest M] [--resume] [--no-checks] [--max-events 26000] [--json]`: runs the verified FULLWORD order (skeleton 12 octets -> 10 public hubs -> tie octets 5,12 -> 13 more hubs (4 owned) -> 10 compact duals -> 4 gated duals -> 16 signal steps), each step in its own process on the previous output, accepted only if LEGAL at the INPUT word's exact kappa (|dk|<1e-13, `tk price`); a failing step is logged GAP and skipped. Exit 0 iff the final word has the input kappa exactly, is legal, has <= --max-events events, SPAN5/JR 0 (surgery/validate.py --all) and native 0 bad. Stage time (after REBUILDSPEED): full chain ~3 min (was ~45-65 min); run via `$TK_HQ`. On #6030 it reproduces FULL_final (kappa .003125811557911897, 23333 events). SCOPE: ids in the default manifest and the y1/y4 incidence are #6030's; a word outside that numbering needs its own manifest/incidence (steps that do not solve are GAP, never silently wrong). +- `tk anatomy WORD [--no-lifetimes] [--no-cache] [--json]`: per-side ledger of ANY word (seconds; the exact end replay of section 3 is ~40 s on #6030 and cached by content sha in `alignbuild/out/cache`, #6030's cache shipped in `alignbuild/data`): (1) R0 by class + law kappa (gapmap.components, EXACT); (2) skeleton/mains: X and Y main tax and park stops; (3) lifetimes by mechanism: markets / twins (hub ends) / other ends / signal and other births with enabling-stop cost and net lo..hi (ALIGNLAW attrib, bit-identical to attrib6030 on #6030); (4) hub ledger per octet frame (HUBCOST ledger as a function, reproduces O-net 117.90, cpy 233.51, NET 351.41, d8 67.55); (5) signal (H signal R0, owned staging, hub d8 column); (6) copies (52 pure crossing copies, COPY events). Classes are tiling-relative (fcls): valid for the octet class around #6030. +- Tests: `tests/alignbuild_test.py --fast` (7 s; in `regress --fast`: anatomy numbers above + a 2-step `tk rebuild` at exact kappa) and `--quick` (the full rebuild of #6030; in `regress --quick`, so run `regress.py --quick` via hq, ~70 min longer than before). + +## BULKEVAL additions (Oct 28, BULKEVAL: `tk bulk` + CORPUS = the bulk-eval table (TOOLING, no kappa claim) +- `ext/CORPUS/`: `build_corpus.py` (idempotent; adds only new content shas) -> `words/.json.gz` + `manifest.jsonl/.csv` (id, kind swarm|gen, source PR#/lane, pr, head, package, sha = sha256 of the decompressed JSON[:16] (= genpipe2.content_sha), file_sha, events, public, claimed_kappa from the PR's RESULT.json, origin, aliases). Swarm = every distinct `research/p104-*/WORD.json.gz` blob in `TKAUDIT/src/g.git` (read-only git) attributed to the PR whose head is the introducing commit (else the lowest PR containing it) + `toolkit/words` leftovers; gen = the curated `GEN_PATTERNS` list (best_px, best_lb, r104 variants, SKELGEN/OCTETGEN/FULLWORD/GENPIPE2/... outputs). To add words: append a path to `GEN_PATTERNS` (or drop WORD.json.gz into any dir; `tk bulk DIR` also accepts a plain directory) and re-run. +- Run: `tk bulk ext/CORPUS --out ext/CORPUS/results.jsonl --hq` (one hq job; 2 worker threads each driving child `tk` processes, so <=2 heavy at a time; ~16 s/word, dominated by `check --native`). Re-running skips shas whose steps are all OK (failed steps retry; `--force` redoes). Table: `results.summary.md` (top-N + all) and `results.summary.csv`; per-side columns R0_X/R0_Y/R0_O/R0_Hsig/R0_Hbot/R0_Hmid/R0_Htop (gapmap components of the word itself), dR0_ref, hubNET (anatomy; tiling-relative to #6030), native (ok / FREE-ok = legal only under TK_FREE_BOUNDS in the child / BAD), ship verdict, d_claim_ppm. +- Test: `tests/bulk_test.py [--fast]` (2-word corpus #6030 + #5551: all steps, exact kappa, gapmap self-gap 0, sorted summary, resume, --only/--force; `--fast` = no native, 6 s, in `regress --fast`; full ~40 s in `--quick`). + +## RESIDTOOL additions (Oct 28, RESIDTOOL: joint signal+residual re-solve of fused relays (TOOLING + SEARCH) +Code `ext/RESIDTOOL/` (venv python -B, no env at import; heavy runs via `$TK_HQ`, THREADS=1). +- `jr.py WORD [edits] [--free R[:frames][:lo-hi]] [--free-cop] [--src-sym ..] [--only-frames ..] [--pairs-dropped] [--partial] [--stage-h] [--absorb-only]`: exact linear-algebra re-solve (SURGERY `rp.joint3` quotient solve mod 2^31-1 + SELF/SCALE candidates + dyadic-preferring column retries + own Newton loop + REALISED end-of-program repair `end_block_fix`; final truth `legal.check` + exact kappa) that frees BOTH signal and residual (x-content) events of a register set while the rest of the word is the fixed contract. Edits: `--end H[:F]`, `--drop-helper H`, `--kill-stop R:J`, `--rehost S:JS:F`, `--addstop R:F:T1`, `--strip-reads H`, `--drop-events T,..`, `--roundtrip R:LO-HI` (validation). STATUS is SOLVED_LEGAL / NO_SOLUTION_IN_SCOPE (first-order only, NOT a proof) / NO_CONVERGENCE / ENDER_NOT_CLEANABLE / CAPPED / ILLEGAL; a capped run is never a pass; a gain is written with `--out` only if kappa rises. No stop-search (iob2's new-stop candidates are not re-implemented). +- `stage1.py WORD h,..` (= `jr.clean_ender`): EXACT slot-level pure test whether an ended helper can regain row e_h (classes CLEAN / TWIN_LAW / NO_HOLDER / NO_SPAN). `spantest.py` (all-times necessary condition, `--strip`), `defect.py` (defect left by a pure deletion), `census.py` (exact chain-tax ceilings of fused-relay helpers; `census_r245g.txt`), `batch.py WORD CASES OUT.jsonl` (one jr.py subprocess per case line; cases_*.txt). +- Test: `python3 -B ext/RESIDTOOL/test_jr.py` (inline: null reproduces r245g kappa .0031283932032711292 exactly, L1 round trip re-derives 716's last two events at diff 0, xcap guard reports CAPPED) + the three hq checks it prints (free-only, L2 round trip with end_block_fix, SURGERY positive control `ctrl470.json --kill-stop 470:1` -> kappa .0031258115579118617). + +## GENUPGRADE: lemma wires into the generators (TOOLING, all opt-in, defaults byte-identical) +- `tk gen2 --lawprune`: purex2 `--lawprune --dyfix`. On a purex2 failure the named enders are dropped (Exit Lemma L2: a non-0-born e_h holder; slot law L1: inconsistent joint solve) and the Z block is completed by the exact PB5 dyadic factoriser (`gen2/dyadic.py`, copy of planbuild `_decompose`) when the heuristic Euclid is stuck (det is 1, so it always exists). A config that solves is untouched (r104 content sha a691733502945e0a with the flag). +- `tk gen2 --gshape taxW`: rt.build greedy gain with the exact chain-tax marginal (Lemma 4) instead of 4 x births. Model R0 ties/loses (8823.6 vs 8821.8): kept as a knob only. +- `tk gen2 --stages ...,fold`: R-FOLD census + RULEMINE fold.py on the last word (0 sites on every gen2 word). +- `tk rebuild WORD --post fold,hoist`: constructor passes after the exact-kappa chain: R-FOLD (RULEMINE fold.py) then H-HOIST (`alignbuild/hoist.py`, NEW: automated gauge stop drop, the IOROOT2 hand prep.py edit). Each accepted only if LEGAL with kappa strictly up; writes OUT.post.json.gz. Rebuild(#6030)+fold+hoist = r245g kappa .0031283932032711292 exactly (EXACT on FULL_final, chain_242, f1049). +- `python -B alignbuild/hoist.py WORD OUT [--dry]`: H-HOIST alone (sites, legality, exact kappa per site). Bulk driver for paired off/on generator runs: `ext/GENUPGRADE/gubulk.py`. + +## GEN3 additions (Oct 28, GENHUBS: `tk gen3` = gen2 + Y-route stage (GENERATOR scaffold + lever) +- `tk gen3 [--out DIR] [--stages gen2,yroute,signal,post,screens] [--from WORD] [--seed --gauge --order-dirs --d3-dirs] [--yroute-max N] [--yroute-tries N] [--yroute-census-only] [--post-passes fold,hoist] [--screens evretime,retime] [--list]` (genpipe3.py). + Each stage reads the newest earlier stage word in --out (or --from WORD), writes OUT/.json.gz + an exact price line in OUT/stages.jsonl, never-lose. + gen2 = `tk gen2 --lawprune` (routeb,ylate,order,purex); yroute = Y-MEET lever (ext/GENHUBS/ymeet.py census -> sites.py cases -> RESIDTOOL jr.py `--end L:F --addstop y:F:T1 --stage-h`, + greedy via ymeet_apply.py direct construction + jr repair, kept only if LEGAL and kappa up); signal = ledger record only (gen2's route-B signal is built inside gen2; no splice tool exists); + post = rebuild.post fold,hoist; screens = tk eval with TK_FREE_BOUNDS=1 in the child env only. Heavy stages (gen2, yroute with jr, screens): $TK_HQ. +- Helpers in ext/GENHUBS/: invoice.py (per-register R0 invoice by class), ymeet.py (Y-MEET census + model greedy), sites.py (jr cases), endprobe.py (Exit-Lemma + ender-cleanability pre-test per site, ~0.4 s/site), ycensus.py (Y-only helper span census). +- Test: `python3 -B ext/DESIGNER/toolkit/tests/gen3_test.py` (~2 s, ALL PASS). + +## PRIMGEN additions (Oct 28-29, PRIMGEN: gen3 stage `primgen` = Y-routing + fan-out landing (O1 relaxed), opt-in +- `tk gen3 --stages primgen[,yroute,signal,post,screens] [--seed --gauge --order-dirs] [--primgen-aware] [--primgen-dims 4,8|1,2,..,8]`: REPLACES the gen2 stage. gen2's route-B bottom, + then FANLAND (ext/PRIMGEN/fanland.py): exact greedy over 'readers stop at the piece frame g (any dim) and read the piece there' vs gen2's landing copies, every candidate + priced by a full landing re-solve (11 ms); realised by `PRIMGEN/primgen_rb.py` (route_b.main unchanged, model swapped in-process), then purex2 --xstops --lawprune --dyfix. ~12 s. + Model delta = word delta EXACTLY (-68.170732 on b0). On gen2's o1 path the lever is purex's Q ender at equal tax and the two exclude each other per Y (Exit span): + plain = -4.0e-6 kappa vs r104 (seed 0); `--primgen-aware` = 0 sites. Not a generator gain; kept as the O1-relaxed reference stage. +- Diagnostics: `PRIMGEN/lifet.py` (lifetime term L of THEORY 1.3, keep-stop convention), `PRIMGEN/o0census.py` (mains-as-relays / cancellation features a rect model cannot express: + r245g X<-H 297, X peels 59, Y<-Y 116, Y<-X 110; gen2 41 / 0 / 0 / 12), `PRIMGEN/gmodel.py` (reader-group sinks at any dim; loses by R2), `PRIMGEN/pgbulk.py` (paired bulk, hq). +- SPAN stage (coordinator redirect): `tk gen3 --stages span [--from PRE_PUREX_WORD]` = PRIMGEN/spanrelay.py (X mains as relays with exact peels; census xrelay.py, holder test xr_holder.py, construction xrelay_apply.py) then purex2. Never-lose; 6-config sample 4 wins / 2 ties, mean +7.8e-7. Wall: 0-3 holder sites per gen2 word vs a ~-490 R0 model ceiling. +- Test: `python3 -B ext/DESIGNER/toolkit/tests/primgen_test.py` (~12 s, ALL PASS); gen3_test.py now expects 7 stages (gen2, primgen, span, yroute, signal, post, screens). + +## RETAINOP additions (Oct 28, RETAINOP: R-RETAIN = the retained-operand stop drop of swarm PR #6167 (GENERATOR, EXACT, opt-in) +- `alignbuild/retain.py WORD OUT [--max N] [--skip ROOT:FRAME,..] [--census] [--dry]`: census (middle stop of s whose events are all reads; readers' extra stop must pay; stranded operands retained by INIT/COPY/ADD/CLEAR) + exact apply + IncrWord judge (LEGAL, kappa up), greedy with re-census. r245g -> W6167 bit-identical (model +1.116 = word delta); W6167: 0 sites. +- Wiring (flags only): `tk rebuild WORD --post fold,hoist,retain`; `tk gen3 --stages retain` (stage 'retain' after 'post', STAGES now 8; `--post-passes ...,retain` also works); `tk bulk CORPUS --steps retain --out F --hq` (opt-in step; words with accepted sites -> CORPUS/retain/). +- Test: `tests/retain_test.py` (3 s, ALL PASS). Tools: `ext/RETAINOP/{census.py,widescan.py}`. Backups *.bak-retainop. + +## SIGGEN additions (Oct 29, SIGGEN: gen3 SIGNAL stage (contract + floor + exact per-root re-solve), opt-in +- Code `ext/SIGGEN/` (venv python -B, no env at import): `contract.py WORD [--floor] [--out C.json]` (generic signal I/O contract + SIGFLOOR floor generalised; r245g/W6167 gap 5.27 = SIGFLOOR), + `sgb.py` (SIGPIN sigb + `--couriers --f0 --relocate --exclude --free-bounds`), `siggen.py IN OUT` (feeds then reads per moving root family, never-lose), `feedplan.py WORD [--residual-only]` + (CP-SAT restricted feed-cover price; NOT a lower bound), `acct.py WORD` (per-register direct-contact signal invoice: feed climbs / pure couriers / reader stops). +- Wiring: `tk gen3 --stages signal --siggen [--from WORD]` (genpipe3.py, backup .bak-siggen; default signal stage unchanged). Test: `tests/siggen_test.py` (6 s, ALL PASS). +- Results: W6167 re-derived at its exact kappa (16/16 steps); p1oF / m12 / g2best: 0 gain (feeds re-derived identically, no courier deletable) -- from-scratch signal is at the + optimum of its contract; the 1.5-2k is skeleton (no whole-root feed carriers, c_k distribution through the mirrored top). Contract JSON format for PRIMGEN: the original lane notes (not shipped) diff --git a/research/p104-designer-toolkit-v2/P104-LEMMAS.md b/research/p104-designer-toolkit-v2/P104-LEMMAS.md new file mode 100644 index 0000000000..129f28dd10 --- /dev/null +++ b/research/p104-designer-toolkit-v2/P104-LEMMAS.md @@ -0,0 +1,534 @@ +# P104 lemmas: local laws of the productive-controller word, with proofs + +Scope tag: THEORY / exposition. A consolidation of the PROVED statements from the lane notes, in one self-contained form. +Nothing here is new computation. Every EXACT number is copied from the original lane notes (not shipped). +Each claim carries a label. Where a note's proof had a gap, the gap is flagged (marked **GAP**) and, where a short rigorous proof exists, that proof replaces the note's. +Labels: **SPEC** (verifier or pricing), **PROVED** (proof given here), **EXACT** (certified computation on a stated instance), **MEASURED** (census regularity), +**SCOPE** (proved, but resting on a measured constant), **ARGUED** (reasoning without full proof), **MODEL**, **OPEN**, **REFUTED**. + +--- + +## 0. Setting + +### 0.1 The verifier (SPEC) +`local.py` = `research/p104-productive-controller/local.py` (line numbers below). Ambient space F2^9. A *frame* is a subspace (F0 = {0}, F9 = everything). +- **Rows.** Every register r starts holding its unit row e_r (l.117). Public registers are r < 735 (packages retarget this to <= 770); owned registers are 735..742. +- **MOVE** (l.123-128). Ownership must match. A public MOVE goes strictly *up* (a < b), an owned MOVE strictly *down*. Every MOVE, public or owned, adds one unit to `paid[|dim b - dim a|]`. +- **INIT / CLEAR** (l.129-141). These apply to owned registers only. INIT sets the row to 0 at a frame. CLEAR erases the row at the frame where the register currently is. +- **ADD / SCALE / COPY** (l.143-161). The coefficient is nonzero and dyadic (l.144-146). SCALE multiplies by a dyadic *unit* (l.149). + ADD r += q s needs s != r and **both registers at the same frame** (l.154, "Common scalar chart"). COPY writes only into a cleared owned field (l.156). +- **Exits** (l.162-168). No owned register is left live. Each public r ends at its declared final frame with row e_r, except Y = r with r - 112 live, which ends at e_r + e_{r-112} (= y_j + x_j). Owned rows end at 0. + The capsule enforces owned peak == 1 at l.162; packages patch this to <= 13. +- **Helpers** (l.169-171). Each non-main public register is counted once, in `helpers[dim final - dim initial]`, and that span must be > 0. +- **Literals.** Fewer than 26000 events (l.115). A scalar/route budget below 10^7. The public inventory (735 in the capsule, 770 in current profiles). +- **Price** (package pricing; reimplemented in `infra/price_exact.py` l.18-24). kappa is the root of + **F(k) = sum_r (T_r - P_r) r^(1-k)**, where T = 18 * helpers + T_out and P = 18 * paid + P_out, and T_out, P_out are word-independent constants. + +Notation. x(v) is the projection of a row onto the 104 X-unit coordinates (the "x-content"). Every other public unit is a *junk* coordinate. +A register's *chain* is its sequence of frame dims. tax(chain) = D ln D - sum_i j_i ln j_i, where D = span and the j_i are the jumps. +mu(a,d,b) = (b-a)ln(b-a) - (d-a)ln(d-a) - (b-d)ln(b-d) is the tax of one stop at d inside a jump a -> b. +The lane-wide linearisation 1/kappa = 130.27 + .02364 (R0 + 380 (paid - 56)) is used only to convert numbers into R0. Its constants are fitted, not derived here. + +### 0.2 Three accountings +- **Real values.** The values the verifier computes. +- **P'.** Every public read of an owned register is replaced by a fresh formal symbol. Sym_g is the span of the symbols created at chart g. +- **P_M.** Owned values are tracked exactly *within* a chart. Each owned MOVE arrival at g is replaced by a fresh symbol sigma_mu, with rho(sigma_mu) = its real value. + There are m_g such arrivals at g. Sym_g is their span, and rho maps the symbols back to real values (identity on public coordinates). +A helper is **clean** in an accounting if its final there is exactly e_h. A helper is **dirty** if its final is e_h + z with z != 0. In every accounting, real finals are clean. +In each accounting, A_g is the list of values *arriving* at chart g: MOVE arrivals, plus the initial values e_r of registers whose initial frame is g. + +--- + +## 1. Foundations + +**Lemma 0 (local block, PROVED).** Let the n registers present at a frame phi perform ADD/SCALE only among themselves, with no arrival, departure or owned event in between. +Then their values satisfy V_after = T V_before, where T is an invertible n x n matrix. +*Proof.* ADD r += q s with s != r is an elementary matrix (l.154). SCALE multiplies by a nonzero unit (l.149). [] + +**Lemma 1 (local span; JR(i), PROVED).** Every value held at chart g, by any register at any time, lies in span(A_g) + Sym_g. This holds in P' and in P_M. +*Proof.* Induct over the events at g. A MOVE in adds a vector of A_g, or a symbol in P_M. An initial value is in A_g. ADD, SCALE and COPY combine values present at g (l.154, l.157). +INIT gives 0 (l.133), and CLEAR gives 0 (l.138). In P', an owned read adds a symbol of Sym_g. [] + +**Lemma 2 (owned registers add rank only by MOVE, PROVED).** In real values, every value held at g lies in span(public arrivals at g, initial values at g, owned MOVE arrival values at g). +The number M of owned MOVEs satisfies M <= sum_r r * paid_owned[r]: owned MOVEs strictly descend (l.126), so each one has rank >= 1 (l.127). +*Proof.* This is Lemma 1 with the owned arrivals kept as vectors rather than symbols. [] +Corollary: an owned lifetime that never moves adds nothing at any chart. + +**Lemma 3 (junk bookkeeping, PROVED).** Fix a public helper h. Let c_h(v) be the e_h-coefficient of a row. +If a register r != h has c_h(V_r) != 0 at some time, then r must later execute an ADD r += q s with c_h(V_s) != 0. +*Proof.* Only ADDs into r with c_h(V_s) != 0 change c_h(V_r): SCALE rescales a nonzero value, and COPY targets owned fields. The final c_h of r is 0 (l.164-168). [] +*Instance (EXACT).* In the frontier word, every public hand-off of root content from a relay r carries r's junk e_r. Its receivers cancel that junk by reads that are paired to r. +Deleting any one of root 4's 9 hand-offs and offering a direct root read is UNSOLVABLE. Adding junk-partner reads for the deleted pair makes it solvable. +So a hand-off is specified by the pair (root content, junk content), not by the root content alone. + +--- + +## 2. Cost lemmas + +**Lemma 4 (additivity, PROVED from the price).** Let e = 1 - k. Then F(k) = const(k) + sum_r g_r(k), where + **g_r(k) = 18 [r is a helper] s_r^e - 18 sum_{jumps j of r} j^e.** +So g_r depends only on r's own dim sequence. Consequences: +- (A1) Frames of equal dim, events, their order and their number never enter kappa. Events meet only the literals. +- (A2) Edits that change disjoint sets of chains satisfy Delta F = sum_i Delta F_i, at every k. + *Hypothesis:* F has a single sign change, from + to -, in the pricing bracket. Under it, if every edit alone has Delta F_i(kappa0) <= 0, then the combination has kappa <= kappa0. + Edits interact only through feasibility, or through edits to the same chain. (**GAP, minor:** the single sign change is a property of the invoice, assumed by the pricer's bisection, and not proved here.) +- (A3) A helper with one jump has g = 18 s^e - 18 s^e = 0. More generally the jumps of a helper sum to its span, so g_r = -18 k tax_r + O(k^2). This is where "R0 = sum of taxes" comes from. +*Proof.* T gains 18 at s_r for each helper (l.170). P gains 18 at |gap| for every MOVE (l.127). [] +*Tightness (EXACT).* Three predecessor words differ from #6030 on 6, 11 and 12 chains. Their kappa, computed from the per-chain differences alone, matches the exact kappa bit for bit. + +**Lemma 5 (swap gauge, PROVED).** Let a and b be public registers that are both at frame f at time t1 and both at a frame g at a later time t2. +Construct a new word as follows: +- at t1, swap the values of a and b (a += b; b -= a; a += b; b *= -1); +- in the window (t1, t2), relabel a <-> b in every event (MOVEs included); +- at t2, swap the values back. +The result is legal, it has the same final rows, and its kappa is identical. +*Proof.* Within the window each relabelled register holds exactly the value its partner held in the original, and it sits at the partner's frame. So every ADD is still at a common chart (l.154), and every MOVE still starts from the current frame (l.125). +The swaps use coefficients +-1 and the unit SCALE -1 (l.144-149). The jump multiset over all registers is unchanged: segments are exchanged between the same pair of frames f and g. +Initial and final frames are unchanged, so the helper spans are too. By Lemma 4, kappa is unchanged. The cost is 8 events. [] +*Tightness (EXACT).* An X main and a 0-born helper exchange futures at dk = 0, LEGAL. Whole octets can be relabelled: one octet with 0 done-at-O X, another with 7 of 8. +So "which X are done at the octet frame and which climb" is a gauge choice, not a cost fact. + +**Lemma 6 (shadow-relay fold, PROVED identity; realisation EXACT per site).** Let an owned root rho have consecutive stays a -> b with d_a > d_b. Let a public helper H, born at dim d_b - beta, read rho at b and then climb a nested chain b < f_1 < ... < f_{m-1} < a, and end at a. +Replace this by: rho descends a -> f_{m-1} -> ... -> f_1 -> b, and H becomes a single jump. Then, with D = d_a - d_b and e = 1 - k, + **Delta F(k) = 18 ( beta^e + D^e - (beta + D)^e ) > 0 for 0 < e < 1.** +The linearised gain is mu(0, beta, beta + D) R0, which is the tax of H's first stop. +*Proof.* H's jumps after b are exactly the reversed jumps of the deep descent, because both visit the same frames between b and a. Removing H gives +-18[(beta+D)^e - beta^e - sum_deep j^e] by Lemma 4 and A3. Rho's P-terms change by -18[sum_deep j^e - D^e]. The sum_deep terms cancel. Positivity is strict subadditivity of x^e for 0 < e < 1. [] +- On #6030 beta = 1 and D = 6, so the gain is 7 ln 7 - 6 ln 6 = **2.871** per relay. On the older families beta = 1 and D = 7, giving 8 ln 8 - 7 ln 7 = **3.014**. +- **GAP (corrected statement).** The notes give the saving as "staging(a -> b)". That equals mu(0, beta, beta + D) only because the root's top jump (8 -> 7) and beta are both 1. The general form is the one above. +- **Realisability is not implied.** Each site still needs an exact re-solve of H's receivers: re-read rho or its junk partners, and relocate rho's landing lifetime. + This is EXACT on #6030: roots 4 and 5 give +6.663e-7 and +6.666e-7 kappa; root 2 succeeded only after the reader MOVEs were hoisted. + It fails on older-geometry words: no common chart exists for the re-read, and one word sits 26008 events above the cap. + +**Lemma 7 (commutation, PROVED, "if" direction).** An event p += c h at (t0, f0) can be moved to (t', f) with the same values everywhere if four conditions hold: +h is not written in between, p is not read in between, p is not SCALEd in between, and p and h are both at f at t'. *Proof.* Addition commutes with the other writes into p, and no other register sees p's value in between. [] +(The notes state "iff". The "only if" direction is not proved.) +*Application (EXACT census).* Consider all 464 0-born helpers of the frontier word. For 461 of them, moving the birth off F0 leaves some F0 event with no meeting at a later common frame. The other 3 are single jumps with ceiling 0. +So F0 births are geometrically forced wherever they cost anything. This is scoped to one moved event per F0 event, with partners taking at most one new stop. + +--- + +## 3. Rank and content at one frame + +**Lemma 8 (merge-sink, PROVED).** Take a block at phi as in Lemma 0. For each register k, let sigma_k(j) be the scalar coefficient of V_k in Y_j's final. +The rest of the program is row-linear (l.150-160), so this coefficient is well defined. Let X and S be the n x 104 matrices of x-rows and of sensitivities, and Delta = S^T X. +Then Delta_arr = Delta_dep, and + **n - rank S_dep >= rank X_arr - rank Delta.** +*Proof.* V_dep = T V_arr, so S_arr = T^T S_dep, and Delta_arr = S_dep^T T X_arr = Delta_dep. Sylvester's inequality gives rank(S^T X) >= rank S + rank X - n, and rank S_arr = rank S_dep. [] + +**Lemma 8b (dual content-in-frame, PROVED).** Suppose k departs phi to a next frame F', and every register on a read path from k to Y_j is public. +Then sigma_k(j) != 0 implies F' is inside Q_j, i.e. q_j is in F'^perp. +*Proof.* A path k -> r_1 -> ... -> Y_j consists of ADDs at common frames. Public frames only ascend (l.126), so every register on the path is, at its read, at a frame containing F'. Y_j's frames lie inside its final frame Q_j. [] +The hypothesis excludes owned registers, which descend. + +*Application (EXACT inputs, pair model).* At a cycle hyperplane hp where two rank-1 blocks (g1,h) and (g2,h) merge, four facts hold: +(a) the blocks share the reader factor rho_h; (b) the x-arrivals pi_g1 and pi_g2 are independent; (c) |supp rho_h| >= 3; (d) every next frame of a departure reaches at most 2 of h's readers (by 8b, dim F'^perp <= 2 gives at most 3 readers; parity cuts this to 2, because readers have odd weight and the sum of two readers is even). +Then rho_h lies in the row space of S_dep, and by (c) and (d) rank S_dep >= 2. Lemma 8 then gives **n >= 3**. At n = 3, S_dep has a nonzero left-kernel vector, so after an invertible change of the block one departure has sigma = 0: a *sink*. +(a)-(d) hold EXACTLY on all 168 cycle hp's. Two continuing dual registers can therefore never deliver a merge with any number of ADDs. One explicit 4-ADD construction with a third register Z works, with det = 1: +Z += D2; D1 += D2; D2 -= Z; D2 += D1. +*Tightness (EXACT).* All 109 merge hp's of #6030 have exactly 3 registers, one of which is a zero-sensitivity sink. In the pair model the cheapest generic sink is a fresh 0-born (0,6,9) register at 6 ln(3/2) + 3 ln 3 = 5.7286 R0. + +**Lemma 9 (frame conservation and local end, PROVED).** Suppose there is no owned CLEAR at frame E after time t0. Then every value present at E at t0, together with every later arrival, lies in + span(values departing E after t0) + span(finals of registers that end at E). +*Proof.* The invariant "span(arrivals so far) is inside span(present) + span(departed)" survives each event: arrivals and departures move one vector, and ADD/SCALE/COPY/INIT do not shrink span(present) (Lemma 0). Only CLEAR can. At the end, "present" = finals. [] +- **Local-end corollary.** Let a helper m end at E, below F9, and let t_a be its last arrival. Then x(V_m(t_a)) lies in X(departures from E after t_a) + span{x_y : Y_y ends at E}, because helper finals have x = 0. +- **Closed frame.** If nothing departs E after the arrivals, then span(arrivals) = span(finals). + *Instance.* On market dual 116 of #6030, each dim-8 delivery frame is visited only by its Y and by members that would end there. So every arriving member's x-part would be a multiple of x_y, but the members carry independent read-frame content. + So no plan in which members end low on 116 exists, structure aside. +- **GAP.** The notes' form ("span of the *other non-Y* registers", with a Y returning "total coefficient 0 on e_y") assumes that no register other than Y holds e_y. That need not hold. The corollary above is the rigorous replacement. + +**Lemma 10 (leavers, PROVED in scope).** Let O be a frame with no reader (no Y ends or stops there), no X ending there, and no owned CLEAR or owned departure. Then + **#public departures from O >= dim xspan(arrivals at O).** +*Proof.* Apply Lemma 9 over the whole history of O, then project with x. The only finals at O are helper finals, which are x-free. [] +*Instance.* Octet frames O_r are reader-free (EXACT, 14/14). On the 13 root-feeding full octet hubs the arrivals have x-rank 8 (MEASURED: every up character uses all 8 port directions), so **#leavers >= 8**. +The swarm's 4-ender hubs use exactly 8. **GAP (scope):** the source note does not exclude an owned register present at O_r, and owned hub ends exist in the word family. With an owned CLEAR or owned departure at O_r, the bound applies to public plus owned departures, not to public leavers alone. + +**Lemma 11 (hub/market separation, PROVED; geometry EXACT).** After a public register has stopped at O_r, it visits only frames containing O_r (l.126). From its first stop on, a market member visits only frames containing G_r = O_r^perp. A 0-born member also sits at F0, but no register that has been at O_r is ever at F0. +So the two can share a frame only if that frame contains O_r + G_r = (O_r cap G_r)^perp. Since dim(O_r cap G_r) = 2 (EXACT, 14/14), that sum has dim 7. +*Instance (EXACT, r245g).* No dim-7 frame contains O_r + G_r. The only frames containing it are 2-3 dim-8 relay frames per octet, and no market member or served Y visits them. +With the slot defined as "registers that stop at O_r, plus market members" and everything else frozen, the joint optimum is the sum of the two separate optima. +*Scope (independent audit).* On every octet, 4-14 Ys and other registers stop at frames inside O_r (dims 1-3) that hub registers also use, and later reach frames containing G_r. +That bottom-to-market coupling lies outside the slot and is untested. + +--- + +## 4. Ties, custody, and dirt + +Setting for this section. At a chart g, E is a set of clean helper enders and C = A_g \ E. N_s is the arrival value of s with the e_E coordinates and the symbols deleted. C_h is the set of s in C whose arrival holds some e_h with h in E. +q_E = dim(xspan A_g / xspan C) counts the x-directions that only the enders' arrivals bring: the *tie*. + +**Lemma 12 (JF, PROVED).** Let W = span V_C + Sym_g. Then + **q_E <= delta := dim(W cap span e_E) <= |C_h| - rank(N_{C_h} mod span N_{C \ C_h}).** +*Proof.* Let U = span A_g + Sym_g. It contains every value at g (Lemma 1), so in particular e_E, since those finals are clean. Let pi delete the e_E coordinates. +Then ker pi cap U = span e_E, so dim pi(U) = dim U - |E| <= dim W, because U = span V_E + W. Hence dim pi(U)/pi(W) <= dim W - dim pi(W) = delta. +x factors through pi and kills Sym, so q_E = dim X(U)/X(W) <= delta. +For the second inequality: sum_C c_s V_s + sigma lies in span e_E if and only if sum c_s N_s = 0, with sigma absorbing the symbol part. Its e_E-part depends only on c restricted to C_h. [] +- R+ (delta <= |C_h|) is the special case. +- **Count corollary (PROVED).** Call a tie (q >= 1) *non-degenerate* if rank(N_{C_h} mod ...) >= 1. A non-degenerate tie has |C_h| >= 2 holders. + The containment of C_h in the LP's token set (prev >= beta) is cited from the earlier proof of R+ and not re-verified here. +- *Tightness (EXACT).* On the frontier word, q = delta in 33 of 35 (chart, beta) checks, and JF beats R+ strictly in 20 of 35. There are 0 violations on three words and their transposes. + The toys U1 (degenerate) and U2 (non-degenerate, 2 holders) realise q = delta = 1 (sec 5). + +**Lemma 13 (custody, PROVED in P' only).** Work in P', mod Sym. +(This fails in P_M and in real values: COPY o <- d (l.157) followed by d -= o (l.160) legally zeroes a public row.) +In P', public values are linearly independent at all times: +- they start as units (l.117); +- ADD and SCALE are invertible; +- an owned read changes a value only by an element of Sym. +So a vector u in W cap span e_E, u != 0 (it exists when delta >= 1), has a unique expansion u = sum_r a_r(t) V_r(t). Let K(t) = {r : a_r(t) != 0}. +- (i) An op d += q s changes exactly one coefficient, a_s <- a_s - q a_d, and only if d is in K. SCALE rescales one coefficient. Owned reads change nothing. +- (ii) *Scope:* suppose no op at g precedes the last arrival t_g of supp(c), where u = sum_C c_s V_s. Then K(t_g) = supp(c), which is inside C. +- (iii) **Second meeting.** A register enters K only by being read by a K member. If it is not a survivor in C at g, it leaves K only by being read again by a K member. + So a tied ender h is read by a member of its custody set after h acquires the tied content. +*Proof.* (i): rewrite a_d V_d + a_s V_s after V_d <- V_d + q V_s. (ii): uniqueness of the expansion. (iii) follows from (i) and (ii). [] +- This gives no per-chart LP row. The toys U1 and U2 satisfy (iii) at a single chart, with partners reading X0 at the ender's prev chart. +- (The notes' further gloss, "the source of h's content is read twice", is ARGUED, not proved.) + +**Lemma 14 (SEP, x-balance of custody, PROVED in P', inheriting Lemma 13's expansion).** For every t, sum_{r in K(t)} a_r(t) x(V_r(t)) = 0. +*Proof.* Apply x to u: x(u) = 0 because u lies in span e_E, and x(Sym) = 0. [] +*Consequence (ARGUED, single-holder chains only).* Custody of a carrier must be taken while the carrier is x-free, unless an x-copy is also in custody. +So in a uniform single-holder ladder brigade (b, b+1, b+2) the depth is 1. Realisable chains are *stars*, where every holder swaps with its carrier at one pure chart. General holder sets: OPEN. + +**Lemma 15 (DR: dirt enters as a rank, PROVED).** Work in P_M at g. Let: +- D = the P_M-dirty helper enders, with finals f_d = e_d + z_d; +- E* = E u D and C' = A_g \ E*; +- S = span e_{E*}, K0 = span V_{C'} + Sym_g, and T = span{z_d}; +- tau_g = dim (T + K0)/K0 and q* = dim(xspan A_g / xspan C'). +Then + **q* <= dim(K0 cap S) + tau_g <= |H| - rank(N_H mod span N_{C' \ H}) + tau_g,** where H = C' arrivals holding some e_{E*}. +*Proof.* Let K = K0 + T. Each e_d equals f_d - z_d, so S is inside U + T = span V_{E*} + K, and dim(U + T) <= |E*| + dim K. Deleting the S coordinates (pi) gives dim pi(U+T)/pi(K) <= dim(K cap S), and x factors through pi. +x maps K/K0 onto X(K)/X(K0), and its kernel contains (K cap S + K0)/K0, so dim X(K)/X(K0) <= dim K/K0 - dim(K cap S) + dim(K0 cap S). +Add the two bounds, use X(U) inside X(U+T) and X(K0) = xspan C', and apply Lemma 12's second inequality to K0. [] +tau_g <= dim T <= the number of dirty enders at g, so the count form is a special case. + +**Lemma 16 (TAINT, PROVED; proof replaced).** tau_g <= dim T <= m_g + #(tainted arrivals at g). An arrival is *tainted* if its P_M value holds a symbol. +*Proof.* Each real final is clean, so rho(f_d) = e_d and z_d = f_d - rho(f_d). Write f_d (in U, by Lemma 1) as sum_{a in A_g} b_a V_a + sum_mu c_mu sigma_mu. Then + z_d = sum_a b_a (V_a - rho V_a) + sum_mu c_mu (sigma_mu - rho sigma_mu). +Untainted arrivals satisfy rho V_a = V_a, so T lies in the span of m_g + #tainted vectors. [] +**GAP (in the source).** The note decomposes z over span V_{E*} + K0, which holds only mod S. In toy D2, U = span{e_i + x0 + sigma} while z = x0 + sigma is not in U. The direct proof above has no such step. +*Tightness.* Toy D2(k) has tau = 1 at each of its k charts, with m_g = 0 and 1 tainted arrival per chart (sec 5). + +--- + +## 5. Toys and refuted claims + +All toys pass the per-event verifier (contract literals off), and every real final is clean. Frames:

(dim 1), a plane (dim 2), dim-3 charts above it, F9. + +**U1 (degenerate late-born tie).** Registers: X0 (1,2,9), helper h (1,2,3), helper s (2,3,9). h is born at

; s is born at the plane. +- Plane: h += X0; h += s; s += X0; s -= h, which leaves s = -e_h. +- g (dim 3): s += h; h -= s, which leaves h = e_h and s = x0 + e_s. +- F9: s -= X0. +At g with beta = 1: q = delta = 1, the single holder is s, and N_s = 0. + +**U2.** As U1, plus a second plane-born partner s2 (2,3,9). At the plane the two partners become s1 = -e_h + e2 and s2 = e_h + e2. The tie is then non-degenerate, with 2 holders and q = delta = 1. + +| claim (status before) | verdict | witness (EXACT) | +|---|---|---| +| NODEG: no degenerate tie charts (SCOPE in the 901.33 floor) | **not a law** | U1 and U1p are legal degenerate late-born ties. Real words have 0 late-born ties on all 6 sides, so measuring NODEG there says nothing about the LP's regime | +| supply row SUP: late-born ties at dim v <= content-carrying interior stops at v - 1 | **REFUTED** | U6: a non-degenerate tie at (4,2) with 0 supply stops | +| SUP': each tie consumes one supplier meeting | **REFUTED** | U5: 3 ties, 1 supply stop (a single X0 read feeds the whole star chain, cancelled once at F9) | +| own (P'-dirty ends) bounded by SPEC | **REFUTED** | D1(k): one owned lifetime, never moved, peak 1, owned paid 0, k P'-dirty ends (k = 5 and 40 built). It is P_M-clean (tau = 0) | +| dirty tokens <= owned MOVEs <= paid, in count or rank form (MODEL floors 642.06 and 1143.80) | **REFUTED** | D2(k): one owned MOVE (paid 1) gives tau = 1 at k distinct dim-3 charts (k = 1 and 4 built). Each ender is a (1,2,3) helper at 2 ln 2 | +| A1: the owned-delivery matrix C has rank 8, so all 4992 orthogonal pairs carry public demand | **FALSE on the frontier** | r245g: rank C = 10 in P_M (4972 pairs) and 9 in P' (4982); #6030: 9 in P'. Only #5907 has rank 8 | +| the second dual register delivers with one ADD | **REFUTED** | Lemma 8 application, 168/168 hp's | +| done-at-O versus climbing X is a cost choice | **REFUTED (gauge)** | Lemma 5, whole-octet relabellings at dk = 0 | +| the 901.33 floor's scope is "worth < 9 R0" | **wrong** | with the degenerate budget free the floor is 754.14: all +147.2 is the NODEG scope | + +D2(k): o INIT at ; o -= X0; MOVE o -> (owned, rank 1). Each h_i is born at and reads o (in P_M, the symbol sigma). Each h_i then climbs to , reads X0, and ends at its own dim-3 chart. +Real final: e_i. P_M final: e_i + x0 + sigma. + +On A1: rank C <= M is PROVED, because C = sum_mu (Y-coefficient of sigma_mu) (x) x(rho sigma_mu). C = delta on non-orthogonal pairs (EXACT). +rank C = 8 implies C = D M0 D^-1 (by rank-8 uniqueness, prior art #1212), and that implies every orthogonal pair has demand. **GAP:** the converse (NEED = 4992 implies rank 8), stated in the notes, is not proved. + +Star ladder (EXACT for k <= 3; rows for k >= 4 extrapolate the op pattern, unbuilt). One pure chart P carries h (1,2,3), carriers (2, j+1, j+2), and a last holder (2, k+2, 9). Helper tax: degenerate 4.26, 6.96, 9.46 for k = 1, 2, 3; non-degenerate (twin holders) 5.64, 12.54, 17.54. +Against the floor LP's duals, a chain sits about 2.9-3.1 R0 above its optimum, nearly independent of depth for k <= 4. + +--- + +## 6. Certified floor table (public R0; exact rational certificates, independently rechecked) + +Common rows, proved in the earlier floor notes: +- cover/rectangle rows, with the corrected distinct-coverage cap; +- JR, Theorem LC, R+ and JF (degenerate budget free); +- capfix, mains and cpres. +Column bounds assume R0 <= 8000. +Every row passes the swarm test (r245g, #6030, #5907 feasible at violation 0). +The owned layer adds 380 (P - 56) + (8 * 7 ln 7 - sum r ln r) >= -11.1 R0-eq at P = 56. + +| scope | own / owns / ownc | NEED | floor | % of r245g (7953.3) | +|---|---|---|---|---| +| SPEC + paid <= 56 (taint rows, Lemmas 15-16) | taint | 4972 | 0.00 | 0 | +| **SPEC + paid <= 56 + package literals (events < 26000, public <= 770)** | taint (free gives the same) | 4972 | **444.88** | 5.59 | +| measured owned scope (P' counts), A1-corrected | 22 / 18 / 64 | 4972 | **751.46** | 9.45 | +| same + literals | 22 / 18 / 64 | 4972 | **1327.08** | 16.69 | +| measured P_M rank scope (sum tau <= 7, owns 18 P', 26 owned MOVE visits) | 7 / 18 / 26 | 4972 | 781.16 | 9.82 | +| same + literals | 7 / 18 / 26 | 4972 | **1371.98** | 17.25 | + +Scopes that every row carries (read before quoting): +- **NEED = 4972 is SCOPE in every row, the 444.88 row included.** It is the minimum over three words in P_M (Z = 20 zero-demand orthogonal pairs, from r245g). A paid-aware bound on Z is OPEN. So 444.88 is "SPEC + paid + literals + Z <= 20", not SPEC + literals alone. +- Literals are retargetable. The precedent is public 735 -> 770; 968 was requested once, and the analogous older row moved by 241 R0 under it. +- own = 22, owns = 18 and ownc = 64 are measured constants (P'). owns = 18 was measured on #5907 only: the swarm test leaves dirty births free, so it never checks owns on r245g or #6030. +- In P_M the D-side (transpose) rows are used by symmetry; the P_M transpose was not built. +- The rank-form reading of the non-tie rows (dirty, ncont, Q, rank_F) and the coverage corollary with the per-chart bound |H| + tau are ARGUED, not re-audited. These certificates postdate the independent audit. +- 0.00 with own/owns/ownc unbounded: the owned scope carries every floor above 444.88. + +Superseded (do not quote): +- 742.9, 736.28, 752.85, 794.53 and 813.31 are INVALID (the old cap48 row). +- 754.14 becomes 751.46 and 502.37 becomes 444.88, and 1342.25 becomes 1327.08, after the A1 correction. +- 901.33 holds only under SCOPE NODEG. +- 642.06 and 1143.80 are refuted (D2). + +--- + +## 7. Other EXACT, scoped results (censuses, not lemmas) + +| result | scope | +|---|---| +| Root staging is load-bearing: 10/10 staging-drop variants are UNSOLVABLE | reads re-solved; feeds, other roots and public chains fixed; new stops only on the root's own frames | +| Market birth level is forced: on all 14 duals every pair of members' next frames meets exactly in G | geometry of the frontier frame table | +| Single-source X-Y incidence flips: exact ceiling 0 (1/131 is a tie). The read order is content-forced at 80/131 services; the relaxed MODEL ceiling is 72.8 R0 | Y chains fixed, nesting exact; 4/4 mechanism rebuilds UNSOLVABLE | +| Hub-end conversions (ceiling 7.46 R0): 12/12 UNSOLVABLE. The residual lies on the F9 exchange partner's coordinate (Lemma 9: span{e_R + c, e_C} does not contain e_R) | rest frozen; unknowns into R at its end frame | +| No sub-2.70 leaver window on any of the 14 hubs | one-hop windows; two-hop windows need re-framing a copy's hp frame | +| D3 pair read by a Y at dim 2 is pinned by content: 19/19 single moves and 4/4 joint moves infeasible | X chains fixed, existing co-presences only | +| Y read level: the 6 sites with a cheaper dim-3 read are geometrically blocked (the meet with the partner is the pair frame itself) | partners' plans fixed | +| B3 dim-7 Y-Y butterflies are load-bearing: 48/48 deletions infeasible | chains fixed | +| R-FOLD sites: #6030 has 3, r245g has 0 (exhausted); the corpus has 201 sites (a sum of ceilings, not a gain) | Lemma 6 precondition only | + +--- + +## 8. Gaps found (collected) + +1. **TAINT (Lemma 16):** the note's decomposition of z over V_{E*} + K0 is invalid (z need not be in U). Replaced by a two-line proof from rho(z) = 0. +2. **End-low (Lemma 9):** the "non-Y registers, Y returns coefficient 0" form assumes that only Y holds e_y. Replaced by the conservation form. +3. **Leavers >= 8 (Lemma 10):** owned CLEARs or departures at O_r are not excluded in the source. The statement is scoped to hubs with no owned visitor. +4. **R-FOLD (Lemma 6):** the saving is mu(0, beta, beta + D), not "staging(a -> b)". They agree only when beta and the root's top jump are both 1. Realisation is not implied by the precondition. +5. **Additivity A2:** combining edits needs a single sign change of F (an invoice property, assumed). +6. **Commutation (Lemma 7):** only the "if" direction is proved; the notes say "iff". +7. **CUST (Lemma 13):** (ii) needs "no op at g before t_g" as a hypothesis. "Source read twice" is ARGUED. +8. **SEP chains (Lemma 14):** depth 1 for uniform brigades is ARGUED for single holders; general holder sets are OPEN. +9. **JF count corollary:** the token containment relies on the earlier R+ holder argument (cited, not re-checked). +10. **A1:** "NEED = 4992 implies rank 8" is unproved. NEED = 4972 is a hidden SCOPE in the 444.88 floor. +11. **Floors:** the rank-form non-tie rows and the coverage corollary with tau are ARGUED. owns = 18 was measured on #5907 only. The P_M transpose is by symmetry. +12. **Lemma 8b** excludes owned paths. The source's escape note ("no spare owned lifetime exists") is a price argument, not part of the proof. +13. **Floor sensitivity:** the source's "< 9 R0" reading of the NODEG scope is wrong (the true value is 147.2 R0). +14. **CUST / SEP (Lemmas 13-14)** hold in P' only. In P_M or in real values a public row can be zeroed by an owned copy, so uniqueness of the expansion fails. + +--- + +## 9. Gap status (GAPCLOSE, Oct 28) + +Ranked by impact: G1 (whether any floor above 0 is free of measured constants) > G2 > G5 > G4 > the rest. Code: ext/GAPCLOSE/. +Verdicts: CLOSED (proof), REFUTED (exact witness), NARROWED (precise remaining assumption). Nothing argued is promoted to proved. + +### G1. NEED is measured; is there a SPEC-level floor? -> NARROWED + +**Lemma G1a (NEED from SPEC + paid, PROVED).** Work in P_M. Let C be the owned-delivery matrix of sec 5 (FLOORDIRTY cmat.py) and M the number of owned MOVEs. Then + **NEED >= 104^2 / rank C - 104 >= 104^2 / M - 104**, so under the scope paid <= 56 (M <= 56): **NEED >= 90.** +*Proof.* +1. (C = delta off the orthogonal pairs.) Real finals give x(Y_j) = e_j (l.164-168). rho is the identity on public coordinates, so PUB + C = I, where PUB is the + x-part of the P_M public (non-symbol) part. P3a holds for P_M public parts (owned values at a chart are combinations of values at that chart plus that chart's + symbols; a MOVE re-symbolises). So PUB_ji != 0 needs p_i in a frame of Y_j, which lies inside Q_j = q_j^perp: p_i.q_j = 0. Hence C_ji = delta_ij on + non-orthogonal pairs, and C_jj = 1 because every port has odd weight. +2. (rank C <= M.) C = sum over symbols of (Y-coefficients) x (x(rho sigma)); there is one symbol per owned MOVE (Lemma 2); each owned MOVE adds >= 1 to paid (l.127). +3. (Acyclic sets.) Let D be the digraph on the 104 indices with an arc j -> i iff i != j and C_ji != 0; it has NEED arcs, all on orthogonal pairs (step 1). + If D[S] is acyclic, C[S,S] is permutation-similar to a triangular matrix with unit diagonal, so rank C >= |S|. Take a uniformly random order and keep j when it + precedes all its out-neighbours: the kept set is acyclic and has expected size sum_j 1/(d+(j)+1) >= 104^2/(104 + NEED) (Jensen). So 104^2/(104+NEED) <= rank C. [] +*Tightness (abstract).* 48 disjoint 2x2 rank-1 orthogonal blocks plus 8 singletons give rank 56 with 96 orthogonal entries. So rank-and-paid counting alone +cannot exceed about 96. The geometry is needed. (Such a block costs owned gap >= 2 per pair: p_j + p_k lies in no frame inside Q_j cap Q_k, since (p_j+p_k).q_j = 1.) +*Checks (EXACT, cmat.py).* r245g: rank 10, M 26, NEED 4972. #6030 and #5907: rank 8, M 20, NEED 4992. All three are far above the bound. + +**What NEED >= 90 buys (LP, exact certificate).** The scope is the 444.88 row's (tzinv flags, taint=56, ev=26000, hinv=562), with needz = 4902. +It gives **0.00**: CERTIFIED, RECHECK True, and the swarm test r245g / #6030 / #5907 at violation 0/0/0 (cert gc90, jobs/GC_chain1.log). +The toys (D1, D2, U1-U6) have no 104-port cover, so they are not LP objects. Lemma G1a is a 104-port statement, and the toys do not test it. + +*NEED threshold probes (same scope, exact certificates, solve only):* + +| NEED | floor | +|---|---| +| 4972 (measured) | 444.88 | +| 4500 | 269.48 | +| 4000 | 120.30 | +| 3000 | 0.00 | + +needz enters the right-hand sides only, and affinely, so the floor is convex in NEED. The chord through 4000 and 4500 therefore gives **floor > 0 for every NEED >= 3597**. + +**Status.** The SPEC + paid + literals floor is 0 at NEED = 3000 and provably positive from NEED >= 3597. Lemma G1a gives only 90. +- *Remaining assumption (precise):* **Z <= 4992 - N\*** with N\* >= 3597 (N\* = 4972 for the quoted 444.88), a paid-aware bound on orthogonal entries with no owned delivery. Equivalently, at owned paid <= 56 the + owned-delivery matrix has >= N\* nonzero orthogonal entries. +- The missing ingredient is geometric: the support of each symbol's b-side (x-content at the departure chart, recursively through earlier symbols). Rank and paid alone + are tight at about 96 (abstract example above). +- So **no floor above 0 currently rests on SPEC + paid + literals alone.** The 444.88 row is "SPEC + paid + literals + Z <= 20". +- In P' the rank argument fails: there rank C is bounded only by the number of owned-to-public reads, not by paid. Lemma G1a is a P_M statement, which is the + accounting FLOORDIRTY used for NEED. + +### G2. "Leavers >= 8" (Lemma 10 / HUBMKT) with owned visitors -> unscoped claim REFUTED; corrected Lemma 10' PROVED + +**Lemma 10' (PROVED).** Let O be a chart with no reader and no X ending there. Then + **#public departures from O >= dim xspan(arrivals at O) - #(owned MOVEs out of O) - #(owned CLEARs at O).** +*Proof.* Lemma 9's invariant with each CLEAR treated as a departure of the erased value: span(arrivals) lies in span(public departures) + span(owned departures) ++ span(cleared values) + span(finals at O). Project with x. Helper finals are x-free, and owned lifetimes leave no finals. [] + +*Witness (EXACT, GAPCLOSE/hubown.py, real values).* On r245g, #6030 and #5907, octets 3 and 5 (charts 243 and 240) have arrivals of x-rank 8, but only +**7 public leavers**: each has 2 owned exits (1 owned MOVE out + 1 CLEAR). So "#leavers >= 8 per full octet hub", read as public leavers, is **false on the frontier**. +Lemma 10' holds with 0 violations on all 15 hub charts of all three words. Octet 4 (chart 1091) has 3 owned exits and 12 public leavers. +Octets 6, 11, 12 and 13 have arrival x-rank 7. +- Consequence: any per-hub "8 leavers" price must charge public + owned exits. The extra owned exits are owned MOVEs (paid) or CLEARs (events only). + +### G4. A1 converse "NEED = 4992 implies rank C = 8" -> REFUTED (as stated); no floor uses it + +*Witness (exact, by hand).* C = I + (1/100) O, where O is the 0/1 indicator of the 4992 orthogonal pairs. C = delta on non-orthogonal pairs, and every orthogonal +entry is nonzero, so NEED = 4992. Every row has off-diagonal mass 48/100 < 1, so C is strictly diagonally dominant (Levy-Desplanques): **rank 104.** +- Scope: this refutes the matrix statement. Whether a *legal word with paid <= 56* can have NEED = 4992 with rank C > 8 is open. It is part of G1's question, and + #6030 in P' (rank 9, NEED 4982) comes close. +- Impact: none on the certificates. Floors use NEED directly. The proved direction (rank 8 implies C = D M0 D^-1, which implies NEED = 4992; Theorem U) is unaffected. + +### G5. Rank-form reading of the non-tie rows -> NARROWED + +*Monotonicity (EXACT, cert_freez.pkl).* Of the 995 incidences of the dirt columns oL and oD, 963 lie in lower-bound rows with a positive coefficient, so a larger oL +only relaxes them. The other 32 are the budget rows ownL/ownD (hi) and the SPEC rows ownTL/ownTD (oL[v] <= # helper enders at v). +- Hence the SPEC + literals number (444.88 = freez, owned budgets free; the taint rows add 0) **does not need the rank form.** Set oL = the COUNT of P_M-dirty enders + (which is >= tau_g, and satisfies ownT). Then the certificate is valid as soon as each non-tie row holds in count form for P_M-dirty enders. +- *Remaining assumption:* dirtyL, ncont, Q and rankL_F hold in **count form in P_M**. Their source proofs are for P'-dirty counts, and the P' -> P_M transfer is not + written. The rank form is needed only for the measured P_M-rank scopes (781.16, 1371.98), and stays ARGUED there. +- The tie rows are safe in either form. Declaring a clean ender dirty adds z = 0 to T, so Lemma DR still holds and count >= tau. + +### Not reworked here +G3 (CUST/SEP in P' only; D1/U-toys in sec 5 already scope them), A2 single sign change, Lemma 7 "only if", the JF token containment, and the P_M transpose +are unchanged. Their sec 8 entries stand. + +--- + +## 10. NEED from SPEC + owned paid (NEEDBOUND, Oct 28) + +Goal: prove NEED >= 3597 (the point where the SPEC + paid + literals floor turns positive, sec 9 G1) from SPEC + owned paid <= 56. +**Verdict: NOT CLOSED.** NEED >= 3597 is not proved, and no witness of NEED < 3597 at owned paid <= 56 was found. The floor is unchanged +(0.00 without the Z scope; 444.88 with Z <= 20). Nothing new reached the floor's threshold, so no LP job was run. Code: ext/GAPCLOSE/needmove.py (read-only, exact). +What this section adds: the exact arena (10.1); the rank-8 frontier (10.2); a local Gram lemma that kills the cancellation-free half of the abstract +NEED ~ 96 example (10.3); and the precise remaining gap (10.4). + +### 10.1 The arena REL (PROVED necessary conditions) +Readers are the ports themselves: q_j = p_j (FLOORDIRTY cmat.py `orth`). Q_j = p_j^perp. Work in P_M (sec 0.2). Each owned MOVE mu goes from a gather frame g_mu +to a landing L_mu, with L_mu strictly inside g_mu (l.126). It creates one symbol, and C = sum_mu u_mu v_mu^T (Lemma G1a step 2), where u_mu(j) is the coefficient of sigma_mu in Y_j's P_M final +and v_mu = x(rho sigma_mu). Then: +- (R1) **u_mu(j) != 0 implies L_mu is inside Q_j** (p_j is orthogonal to L_mu). *Proof.* sigma_mu enters P_M values only at L_mu. An owned holder that moves is re-symbolised, + so sigma_mu reaches Y_j only through ADDs at frames containing L_mu: public frames ascend, and an owned holder that does not move stays at its frame. Y_j's frames lie in Q_j. [] +- (R2) **v_mu lies in X(g_mu) + span{v_nu : nu earlier, L_nu inside g_mu}** (relays). *Proof.* By P3a for P_M public parts (G1a step 1), the non-symbol part of any value at g is supported on ports(g). + A symbol present at g belongs to a move that landed in a subframe of g (same argument as R1). Apply rho and x. [] +- (R3) C = delta on non-orthogonal pairs, diagonal included (G1a step 1). NEED = #{orthogonal (j,i) with C_ji != 0}. +- (R4) sum_mu (dim g_mu - dim L_mu) = **owned** paid. Note: the verifier's paid[] counts every MOVE (l.127), public ones included. The scope "paid <= 56" and the law's + "paid - 56" mean the owned part (sec 9 G1a uses M <= owned paid). +REL drops everything public except R1-R2. In particular a relay (a public re-ascent carrying owned content) costs no paid in REL; it costs R0 in a real word. + +### 10.2 The rank-8 frontier (PROVED, citing Theorem U) +**Lemma N1.** rank C >= 8, and rank C = 8 implies NEED = 4992. Hence **NEED < 4992 forces rank C >= 9, and so at least 9 owned MOVEs.** +*Proof.* An 8-clique K of non-orthogonal ports has C[K,K] = I_8 by R3, so rank C >= 8. If rank C = 8, then C is a rank-8 completion of the P104 pattern, so +C = D M0 D^-1 (Theorem U; prior art #1212). M0 is nonzero on every orthogonal pair (ROOTARCH sec 5: E_ij E_ji = 1/4 on all 2496 orthogonal edges). [] +- So any NEED below 4992 at owned paid <= 56 comes from a rank >= 9 owned layer. r245g has rank 10, NEED 4972 and owned paid 56. Theorem R9F covers rank-9 family F only; + ROOTARCH sec 6 (escape E1) lists rank >= 9 outside F as OPEN and unswept. That is exactly where any proof or witness at NEED < 3597 must live. + +### 10.3 Local Gram lemma: cancellation-free layers cost >= 1 per diagonal +Say mu **serves** the diagonal set S_mu = {j : u_mu(j) v_mu(j) != 0}. Every j is served by some mu, because C_jj = 1. The move is **cancellation-free** if its rectangle supp u_mu x supp v_mu contains no non-orthogonal off-diagonal pair. +Otherwise its rank-1 term puts nonzeros on non-orthogonal pairs, and other moves must cancel them (R3). A non-orthogonal pair inside S_mu is the simplest case. + +**Lemma N2 (local Gram, PROVED).** Let L be inside g, and let P be the set of ports in g that are orthogonal to L. For p, p' in P, the value p.p' depends only on the classes of p and p' +in g/L, and every p in P has a nonzero class. So the F2 Gram matrix of P has rank <= dim g - dim L, and an orthonormal subset of P has size <= dim g - dim L. +*Proof.* p.(p' + l) = p.p' for l in L, because p is orthogonal to L; by symmetry the same holds in the first slot. p.p = 1 (odd weight), so p is not in L. Orthonormal classes are independent. [] +- (a) **Gap 1.** Any two ports of g that are orthogonal to a hyperplane L of g are non-orthogonal (both lie in the coset g \ L, so p + p' is in L, and p.p' = 1 + p.(p + p') = 1). +- (b) **Relay-free move.** If v_mu lies in X(g_mu), then S_mu is contained in P (by R1), so rank_F2 Gram(S_mu) <= gap_mu. A cancellation-free relay-free move has |S_mu| <= gap_mu. +- (c) **Ancestral form.** Let W_mu be the span of the gather frames of mu and of all its R2-ancestors. Then v_mu lies in X(W_mu), and **dim W_mu - dim L_mu <= sum of the gaps over mu and its ancestors** (each counted once). + *Proof.* Add the gather frames in reverse topological order. Each ancestor nu lands inside the gather frame of a child that is already added, so adding g_nu raises the dimension by + at most dim g_nu - dim L_nu. Then N2 applies to (W_mu, L_mu). [] +- (d) **Single chain (PROVED).** Take one owned lineage with no resets (the scalar on the previous symbol's content is nonzero at every step), no relay from other moves and no public re-ascent, descending from g_top to L_bot, with every move + cancellation-free. Then it serves at most dim g_top - dim L_bot = (its owned paid) distinct diagonals. + *Proof.* Let j be served at some step, so p_j is orthogonal to that landing. Then p_j is outside every later frame of the chain, so e_j is never local again and stays in the content. + A later move serving k has k in supp u and j in supp v, so cancellation-freeness makes k orthogonal to j. The served set is therefore orthonormal, it lies in ports(g_top), and every member is orthogonal to L_bot. Apply N2. [] +- **Consequence.** The abstract tight example of sec 9 (48 orthonormal 2-blocks plus 8 singletons, NEED 96, rank 56) is cancellation-free. Any cancellation-free realisation of it + (single chains or relay-free moves) costs owned paid >= 104 > 56. (Cancellation-freeness is a property of the decomposition, not of C.) **At owned paid <= 56 the owned layer must cancel (non-orthogonal pairs inside some S_mu) or share content (branching, relays).** +- *EXACT (needmove.py; r245g and #5907; not run on #6030 here):* every serving move has non-orthogonal pairs inside S. + - r245g: 14 of 26 symbols serve. Their |S| is 2-28, and 198-324 ordered non-orthogonal pairs must be cancelled per large move. + - #5907: 9 of 20 symbols serve. + - Each large server has rank_F2 Gram(S) = 7 and lands at dim 1 (EXACT). Its lineage top is at dim 8, read from the table's chain structure rather than from a computed W, which is consistent with N2(c) at equality. The 8 relay-free moves serve nothing (0 violations of N2(b)). + The frontier is purely the cancelling, content-sharing (E8) regime. + +### 10.4 What is left (precise) +- **Proof side (OPEN).** No result here bounds NEED for layers that cancel. N1 handles rank 8. N2 handles cancellation-free single chains and relay-free moves. + The remaining statement is: *in REL with owned paid <= 56, every rank >= 9 layer whose served sets carry cancelled non-orthogonal pairs has >= 3597 nonzero orthogonal entries.* + Rank or count arguments alone stay near 96 (sec 9). The missing tool is a rigidity statement for partial E8-like layers: Theorem U extended to rank 8 + s with an owned-cost budget. +- **Witness side (OPEN).** Relays make REL more permissive than SPEC-with-R0. By-hand REL constructions: + - Row service: gather at F9, land at Q_j, gap 1, any row. + - Column service: gather at , land at F0, gap 1, any column. + - Relayed 2-block: inject r = sum over an orthonormal R of e_k at F0 with gap >= |R|, then gap-1 moves from Q_k to Q_j cap Q_k for orthogonal pairs (j,k). This breaks N2(b) for a single move. + Every one of these still pays >= 1 per served diagonal (ARGUED, not proved for general relay networks). No REL layer with NEED < 3597 at owned paid <= 56 was built. + ROOTARCH sec 6 rates rank >= 9 constructions as hard: no non-F completion converges. +- **If such a witness exists,** a SPEC-level NEED floor must charge what REL drops: the public re-ascents that carry owned content (relays) and the content reads at gather frames. + Those are R0 (helper lifetimes), not paid. The floor would then come from a joint paid + R0 argument, not from paid alone. +- Remaining assumption for every floor > 0 (unchanged from sec 9): **Z <= 4992 - N\*, N\* >= 3597.** Nothing argued here is promoted. + +--- + +## 11. Rigidity with cancellation, and the relay route (RIGIDITY, Oct 28) + +Goal: lift NEED past 3597 at owned paid <= 56, by (a) a rigidity bound for cancelling layers or (b) charging relays in R0. +**Verdict: NARROWED.** Route (b) is obstructed EXACTLY: the frontier owned layers have no relays, so a relay term is 0 on them and (b) reduces to (a) on the relay-free class. +Route (a) is neither proved nor refuted. What is new: a served-set rigidity lemma that allows cancellation (N2(e), PROVED, tight on the frontier), a weak Hadamard identity (Lemma H), and exact local rigidity of the frontier skeleton. +No floor changed, so no LP job was run. The floor stays at 0.00 without the Z scope, and 444.88 with Z <= 20. Code: ext/RIGIDITY/ (all scripts read-only and exact). + +### 11.1 N2(e): served-set rigidity with cancellation (PROVED) +Notation as in sec 10. U_mu = supp u_mu (rows), V_mu = supp v_mu (columns), and Gamma is the 0/1 indicator of non-orthogonal port pairs (diagonal included). +**Lemma N2(e).** rank_F2 Gamma[U_mu, V_mu] <= dim W_mu - dim L_mu <= lineage paid(mu) (the gaps of mu and its R2-ancestors, each counted once). +No cancellation-free hypothesis is needed. In particular rank_F2 Gram(S_mu) <= lineage paid. +*Proof.* By N2(c), v_mu lies in X(W_mu), so the ports of V_mu lie in W_mu. By R1, the ports of U_mu are orthogonal to L_mu, and L_mu lies inside W_mu. +Gamma[U,V] is a submatrix of the pairing W_mu x span(U-ports) -> F2. That pairing has rank dim W_mu - dim(W_mu cap U^perp), which is at most dim W_mu - dim L_mu. [] +- Sec 10.3 used cancellation-freeness only to make S orthonormal (so |S| <= gap). N2(e) bounds the F2 Gram rank instead, and needs nothing about cancellation. +- **This bounds served-set geometry, not NEED.** Turning it into a NEED bound still needs the delta constraint (R3); see 11.3. +- *Tightness (EXACT, skel.py, all three words).* The script recomputes W_mu from the P_M ancestry (the symbols present in the mover's value at its MOVE). + - Every move with |S| >= 20 has rank_F2 Gram(S) = 7 = dim W - dim L = lineage paid. + - The single |S| = 8 move has rank 4 and lineage paid 5 (slack 1). + - There are 0 violations on r245g (26 symbols), #6030 and #5907 (20 symbols each), and dim W = 8 for every move. + +### 11.2 Lemma H (Hadamard rank, PROVED; weak) +R3 says C o Gamma = I_104. C = sum_mu u_mu v_mu^T, and (u v^T) o Gamma = D_u Gamma D_v. Hence + **104 <= sum_mu rank_Q Gamma[U_mu, V_mu].** +*EXACT (hadamard.py).* On #6030 and r245g the sum is 416, with rank_Q Gamma[U,V] = |U| on every serving move. The F2 ranks are 7 against Q ranks of 44-52. +So the lemma is far from binding. Its value is diagnostic: +- cost tracks rank_F2 (N2(e)), while delta needs rank_Q; +- the gap between the two (about 45 per serving move) is where cancellation happens, and any NEED proof must bite there. +For a single relay-free move whose Gamma block is class-structured (rank_Q = rank_F2), Lemmas H and N2(e) together give cost >= the rank needed. Chains share cost, which breaks this additivity. + +### 11.3 Route (a): exact local rigidity of the frontier skeleton (EXACT, scoped) +Fix a word's owned skeleton (gathers, landings, ancestry) and its v_mu. Free every u_mu(j) subject only to R1. Rows decouple: row j of C is a^T V_j, and delta must hold on the non-orthogonal columns. +- *Solution dimension per row:* d_j <= 3 on r245g (52 rows with d = 0) and d_j <= 2 on #6030 and #5907. +- *EXACT minimum NEED over this REL u-space (uexact.py).* It enumerates every flat cut out by <= d_j orthogonal-entry hyperplanes, in exact rationals. + The minimum is **4962 on all three words**: 30 zeros in total, at most 10 in a row. These are REL witnesses (valid in REL, not in SPEC), and none comes near 3597. +- *Transpose probe (vfree.py; not a witness).* Fix u and free v_mu(i) whenever p_i is in W_mu. This is the N2(c) relaxation, a superset of R2. + The greedy result is 4729 on r245g, also above 3597. +- *Scope.* This is local rigidity of one skeleton, not a bound over REL. Other skeletons (other landings and frames, branching trees, longer chains with more terms per unit of paid) are untested. + +### 11.4 Route (b) obstruction (EXACT) +relays.py classifies every R2 ancestry edge nu -> mu as either: +- SAME: L_nu = g_mu, an owned hand-off at one chart, which costs no R0; or +- STRICT: L_nu is strictly inside g_mu, so the content must climb publicly (a relay). +**STRICT edges: 0 on r245g, 0 on #6030 and 0 on #5907.** Every frontier lineage is a disjoint path, and each mover has at most one ancestor. +- So a cost-aware relay term (stop tax per STRICT edge) is identically 0 on the swarm words. The swarm test passes trivially and the term adds nothing to the floor. +- It could lift the floor only if low-NEED layers were proven to need relays. That is the statement "relay-free layers (path or tree forests, SAME edges only) at owned paid <= 56 have NEED >= 3597", which is route (a) restricted to a subclass. **(b) is not shorter than (a).** +- Correction to an idea floated in this lane: "relay-free layers cannot satisfy delta at paid <= 56" is **false**. All three frontier words are counterexamples. + +### 11.5 Small-case census and the block witness family (EXACT census; costs ARGUED) +The witness family that would kill (a): block-diagonal C = direct sum of restrictions of M0 to sub-root-system line groups (sec 10.2 / ROOTARCH C1). +Such a C is a valid pattern. Its rank is sum of r_k, and its NEED is the number of within-block 60-degree pairs. On the matrix side this is far below 3597 (a partition into A3 line groups, existence unchecked, would give about 416 at rank 52). +Whether these blocks can be realised in REL at owned paid <= 56 is the open question. **Not built.** +*Census (rich.py, grp4.py).* +- 3441 four-dim F2 subspaces have all 8 odd vectors as ports: + - 759 are non-orthogonal 8-cliques (radical of dim 3), which force C_G = I_8; + - 2682 are of two-clique type (radical of dim 2, two non-orthogonal 4-cliques that are mutually orthogonal), with C_G = [[I, X], [Y, I]] and minimum rank 4. +- No 5-dim subspace among the rich extensions holds more than 12 ports. +- For two-clique groups, every Gamma block is class-structured, so rank_Q = rank_F2. With single relay-free moves supported inside the group, Lemmas H and N2(e) give cost >= 8 per 8-port group, i.e. 1 per port, with no NEED/cost trade-off. + For chains, or for moves reaching outside the group, this is **ARGUED** only. A trade-off can only come from Q/F2 rank-gap blocks (E8-like served sets), which is the frontier's own mechanism. + +### 11.6 What is left (precise) +- **Open statement:** in REL, restricted to relay-free forests (SAME edges only, which covers the whole frontier) with owned paid <= 56, every layer has >= 3597 nonzero orthogonal entries of C. + - N2(e) controls each move's served-set F2 geometry. Lemma H is the delta identity. + - The missing link is a quantitative statement: cancelling the rank_Q - rank_F2 excess on the Gamma positions forces nonzeros on orthogonal positions. +- Charging relays adds nothing until that is proved. Because the frontier drops no relay cost, the only other public costs a joint paid + R0 argument could charge are the content reads at gather frames and the Y-side deliveries. +- **The witness that would kill (a)** is a REL realisation of a sub-root-system block C at owned paid <= 56 (11.5). It has not been attempted. +- Floors are unchanged: 0.00 at SPEC + paid + literals, and 444.88 with Z <= 20. Nothing argued here is promoted. diff --git a/research/p104-designer-toolkit-v2/P104-THEORY.md b/research/p104-designer-toolkit-v2/P104-THEORY.md new file mode 100644 index 0000000000..c97d5c20bc --- /dev/null +++ b/research/p104-designer-toolkit-v2/P104-THEORY.md @@ -0,0 +1,606 @@ +# The P104 frontier word: what it looks like, and why +Scope: write-up of the structure of the frontier word and of the floor arguments. No new computation. Paths are relative to this directory unless stated; references to `ext/...` and to the original lane notes name research-workspace artifacts that are not part of this package (the statements and numbers are given in full here). + +--- + +## Summary (one page) + +**The claim, stated so it cannot be over-read.** The frontier word **#6030** (kappa **.003125811557911897**, R0eq 8022.4 against the bar 8015.2) is +(i) built on a code and a tiling that are *forced*, (ii) *rebuildable from rules* on all five of its sides at exactly its own kappa, and +(iii) *locally rigid* in every model we tested. It is **not** proved globally optimal. The only proved lower bound is **794.53 R0 (about 10% of the word; PROVED under SCOPE own=22/owns=18, R0 <= 8000)**. +"Optimal P104 word" in this document therefore means "a word whose every local choice is explained by three principles and cannot be improved by any edit we can express". + +**Forced structure (PROVED/EXACT).** +- The decoder code is E8. Any rank-8 completion of the P104 pattern is the E8 line Gram up to diagonal gauge (Theorem U; prior art #1212). + The rank is >= 8 (the clique number is 8). The rank-9 door is closed inside the natural family F (Theorem R9F), so the 56 owned ranks (8 roots x 7) are a floor and a tie. +- Parity: ports, l_k and u_k all have odd weight, so q(d) = wt(d)/2 mod 2 splits directions into a D3 class (q = 0) and an orthogonal class (q = 1). + An orthogonal ("non-D3") pairing has an exact parity obstruction. +- Tiling: the D3 cosets paired by XOR 384 give 14 octets. T = 384 is the unique octet system that tiles the residual E with rank-1 blocks. + Its octet frames O_r have no readers, so a dim-4 octet frame can only be a cleanup hub. + +**Cost law (SPEC + EXACT).** 1/kappa = 130.27 + .02364 (R0 + 380 (paid - 56)). R0 is a sum of chain taxes, and the marginal tax of a stop is concave in its level. +Events are free. The exact split is R0 = F(skeleton) + Mains - L(lifetimes). Against the octet word P1, #6030 pays +32 in skeleton and +455 in mains, and buys 872 of lifetimes. + +**Three principles (PRINCIPLES).** P1 cost, P3 nesting, P4 instance geometry. P2 (span conservation, including the new outflow-corank law P2c) is a theorem of P3. +17 of the ~25 pinned rules derive from these, 4 more derive given one measured premise, and 7 do not reduce. + +**Five sides, each rebuilt from rules at #6030's exact kappa.** +| side | rule source | rebuilt | +|---|---|---| +| markets (duals G_r) | ALIGNLAW, MKT4, PSOLVE6030 | 12/14 exact; 2/14 at the measured price of one unconstructed owned bracket (6.18 R0 each) | +| hubs (octet frames O_r) | HUBRULES, OWNEDHUB, TOPGEN | 18/18 public end frames + 4 owned; 14 jointly | +| routing (Y reads) | YROUTE | 55/55 octet pairs, unique solution = swarm; 131 sites jointly | +| skeleton (source parks) | SKELORIGIN | 12/14 octets exact, 2 at equal kappa (free ties) | +| signal (root feeds/returns) | SIGPIN | 8/8 roots, 16 steps jointly | +COMPOSE puts all five in one word: kappa .003125811557911897, SPAN5/JR 0 on 999/999 frames, native 0 bad of 2922, 22860 events (after MKTCOMPACT). +FULLWORD (the original lane notes (not shipped), ext/FULLWORD/out/FULL_final.json.gz): all 22 hubs, all 14 market duals (compact), skeleton, routing and signal in ONE word: kappa .003125811557911897 exact, 23333 events, SPAN5/JR 0, native 0 bad, shipcheck passes; 85.0% of events identical to #6030, 15.0% rebuilt/changed (one signal step kept). + +**Honest ledger (EXACT taxes, no-mechanism yardstick).** Markets 73.3 + twin-tied ends 143.2 + other ends/births 60.4 + reader-level Y reads 447.7 [391.7, 505.9] += **724.6 [668.6, 782.8]** R0. The older forced-skeleton figures (markets 241, hubs 277) are superseded. + +**Rigidity (EXACT, scoped).** About 3,200 exact edit tests on #6030 (SURGERY, SURGERY2, RESKEL6030, PSOLVE6030) found 0 improvements. 12 of 14 market columns are +OPTIMAL = swarm tax in the principle column model (the 2 owned-assisted duals are outside its kinds). Every legal skeleton alternative prices at dk = 0 or worse. + +**Open.** (1) The skeleton class: no from-scratch generator reaches #6030's skeleton (the best from-scratch word is kappa .0027748). (2) Global optimality +(the gap between 794.53 and about 8000 is a factor of 10). (3) The 7 non-reducing regularities, above all the exit rule E. + +--- + +## 0. Conventions + +### 0.1 Status labels (used on every claim) +| label | meaning | +|---|---| +| **SPEC** | part of the verifier or problem statement (legal.py, the kappa formula) | +| **PROVED** | a proof is written here or in the cited note (some audited, as stated) | +| **EXACT** | a certified computation (rational / mod-p arithmetic, exact replay, `tk price`) on a stated instance | +| **MEASURED** | a census on #6030 (or #5907): a regularity, not derived | +| **MODEL** | needs an extra assumption (stated) | +| **CEILING** | a relaxation (optimistic bound) | +| **SCOPE** | a PROVED statement that rests on a stated measured constant | +| **OPEN** | not settled | + +### 0.2 Objects +- **Ports** p_i (104), **readers** q_j (the same 104 vectors on the Y side), in F2^9 (frames are subspaces, dims 0..9; F0 = {0}, F9 = everything). +- **Registers**: X_i (one per port), Y_j (one per reader), public helpers H, and owned registers (signal roots). A register has a **chain**: it is born at dim b, + holds one frame per dim, ascends with nested frames, and ends at dim e. Endpoint rule (SPEC): helpers and X end at their initial value; Y_j ends at y_j + x_j. +- **Residual** E = M - I on the 4992 orthogonal port pairs (|E| = 1/2). The **signal** is the rank-8 part, delivered by 8 owned roots (l_k, u_k, H_k = u_k^perp). +- **D3** = {120, 85, 75, 51, 102, 30, 45}: it splits the ports into 28 cosets (20 x 4 + 8 x 3). + **Octet** r: a D3 coset c together with c XOR 384 (14 octets: 6 of 8 ports, 8 of 7 ports). Its span is the **octet frame O_r** (dim 4), + its **dual** is G_r = O_r^perp (dim 5), and Q_j = q_j^perp (dim 8) is Y_j's final frame. +- **Words**: #6030 (frontier, `words/6030.json.gz`); #5907 (its predecessor, same census where stated); P1 = the octet residual word p1nr (8133.2 R0, no lifetimes). + +### 0.3 A note on the kappa print +OWNEDHUB and PSOLVE6030 print the base as .003125811557911862; every other lane prints .003125811557911897. Both are #6030 printed at different display +precision or by a different price path; no lane reports a kappa change between them. "Exact kappa" below means "equal to #6030 under `tk price`". + +--- + +## 1. Problem and cost law + +### 1.1 The law (SPEC, used lane-wide; constants not re-derived here) +**1/kappa = 130.27 + .02364 (R0 + 380 (paid - 56))**, with R0 = sum over registers of tax(chain) and paid = owned MOVE ranks. +- tax(chain) = D ln D - sum_i r_i ln r_i, where D = e - b and r_i are the jump lengths (SPEC, legal.py). +- Bar kappa .0031274 = **R0eq 8015.2**. #6030 = R0eq 8022.4. + +### 1.2 Facts of the cost law (PROVED; PRINCIPLES sec 2) +- **(a) Concavity.** A stop at d inside a jump a -> b costs mu(a,d,b) = (b-a)ln(b-a) - (d-a)ln(d-a) - (b-d)ln(b-d) > 0. + *Proof.* d^2 mu / dd^2 = -1/(d-a) - 1/(b-d) < 0. So the marginal tax of a stop is concave in its level, and the cheapest feasible level is an endpoint of the feasible interval. ∎ +- **(b)** A single jump costs 0: tax(0,d) = tax(d,9) = tax(0,9) = 0. Lifetimes (multi-stop chains), not stops, are the large cost. +- **(c)** The dim-7 stop between 6 and 8 costs 2 ln 2 = 1.386 on any chain. This is the source of exact ties (a stop at 7 on a proxy vs on a newborn). +- **(d)** Events do not enter kappa (only the event-count literal, 26000, bounds them). +- Constants used throughout: + | constant | value | meaning | + |---|---|---| + | 6 ln 6 - 5 ln 5 | 2.70 | a dim-5 stop on (0,6,...); an X stop at 4 on (1,2,3,9) | + | 9 ln 9 - 6 ln 6 - 4 ln 4 | 3.48 | born at 5 instead of 0 | + | 2.70 + 3.48 | 6.18 | a full birth/end save at an O or G frame | + | Y stop | <= 5.55 | | + | courier | >= 6.15 (8.43 for (0,3,8,9); 9.89 for a copy (0,3,6,9); 8.40 un-identify) | | + +### 1.3 The exact additive split (EXACT; LAWFIRST sec 1) +R0 = F(skeleton) + Mains(chains) - L(lifetimes) [+ signal carriers], where F is every helper's tax with birth forced to 0 and end forced to 9 (stop set unchanged), +and L = F - actual helper tax. Error 0 on all reproduced words. + +**Where #6030 sits against P1 (EXACT, residual-only split; ALIGNLAW sec 1a).** +| | F (helpers forced 0->9) | X | Y | L | R0 | +|---|---|---|---|---|---| +| #6030 residual | 6524.5 | 1074.0 | 1022.2 | 872.0 | 7748.6 | +| P1 (octet p1nr) | 6492.1 | 767.0 | 874.0 | 0 | 8133.2 | +| difference | **+32** | **+307** | **+148** | **-872** | -385 | +The 385 R0 lead is bought in the mains (+455) and spent on lifetimes, not on the skeleton. The brief's "+321 skeleton premium" compared a word with signal against a residual-only word (corrected, sec 5.3). +Of the +32, about 224 is lifetime-enabling helper stops, so #6030's piece skeleton is about 190 *cheaper* than P1's: it uses fewer, longer helpers (EXACT, hshape.py). + +--- + +## 2. Forced structure: code, parity, tiling + +### 2.1 The code is E8 +**Theorem (r >= 8) (EXACT; SIGNCODE2).** The graph of non-orthogonal port pairs has clique number 8. On a clique, CS = I_8, so any decoder has rank >= 8: +at least 8 distinct signal versions, for any coefficients and geometry. + +**Theorem U (PROVED; two proofs; prior art).** Every real 104 x 104 M of rank 8 with M_ij = delta_ij on all non-orthogonal pairs (diagonal included) equals +D M0 D^-1, where M0 is the Gram matrix of the 104 E8 lines and D is an invertible diagonal. +- *Proof outline (ROOTARCH sec 3, computer-assisted; `ext/ROOTARCH/uniq.py, p1global.py, p2signed.py`).* + - P0: the 759 cliques of size 8 are affine 3-flats. M[Q,Q] = I_8 and rank 8 give M = M[:,Q] M[Q,:]. Every port outside Q is orthogonal to exactly 4 clique members. + - P1: 1 = M_ii = sum over those 4 of pi_iq (pi = M_iq M_qi, gauge invariant). The global system (72,864 equations, 2,496 unknowns) has full rank, so pi = 1/4 on every orthogonal edge. + - P2: 4-cycle products are forced to -1/16. The cycles have full rank over Q (2393), and the GF(2) rank (2392) fixes the signs up to E -> -E. That flip has rank 104, not 8. ∎ +- A hand proof (UNIQ8, Sonnet audit PASS, `cards/UNIQ8/THEORY.md`) extends it to any field of char != 2 for the iff zero pattern with nonzero diagonal. +- **Prior art:** this is a special case of the swarm's merged #1212 (rank-8 rigidity). Cite #1212; do not present Theorem U as new. +- **Corollary C1 (EXACT up to a standard root-system fact).** A hyperplane of R^8 holds <= 55 of the 104 lines. So every nonzero row/column-space vector has >= 49 nonzeros. + +**The 56 owned floor (PROVED; scope: exactly 8 distinct read vectors; ROOTARCH sec 4).** Owned forests with copies, additions along branches and public relays all cost +>= 8 x 7 = 56. Support >= 49 > beta(7) = 36 forces dim-8 gathers, and every landing depth costs >= 7. This is tight (#5795's 56). + +**Theorem R9F (PROVED inside family F; RANK9 sec 2).** Every 9-signal factorisation of a rank-9 completion M = D M0 D' + beta gamma^T costs >= 56 owned ranks. A tie needs +one degenerate rk_s = 1 signal. Multi-landing does not help. +- Scope: outside F only SAMPLED. 38/38 converged ALS completions lie in F; a small-basin non-F component is not excluded (escape E1). + +So the "paid - 56" term of the law is 0 at the optimum of every family we can reason about. **The code is fixed. The design problem is R0.** + +### 2.2 Parity (EXACT; NOND3, LKMEET) +- On the even space, q(d) = wt(d)/2 mod 2. Directions with q = 1 (wt 2/6) give only orthogonal port pairs; directions with q = 0 (wt 4/8, D3's class) give only non-orthogonal pairs. +- **Parity obstruction (EXACT, all 5356 pairs).** par(p_i ^ p_k, p_i) = 1 - par(p_i, p_k). So for an orthogonal pair along d, the mirrored reader pair is never jointly + orthogonal to span(p_i, p_k). The self-dual design that makes D3 coherent is impossible for q = 1 directions. + - In the route-B model the best non-D3 joint pairing is +1244 R0, about -8% kappa (MODEL, provisional kill with escape routes; NOND3 sec 3). +- **Parity lemma (EXACT; LKMEET sec 1).** Every port, l_k and u_k has odd weight; D3 directions and 384 are even. So p ^ l_k is never a port. + - A dim-d frame holds <= 2^(d-1) ports, and a frame containing l_k holds <= 2^(d-1) - 1. + - In particular a 2+2 (4-port) frame never contains l_k, and a reader frame containing u_k holds <= 3 readers. + - D3's 8 three-cosets complete {u_0..3, l_4..7}, so each root has one cheap side. This explains the 4 + 4 split of roots into feeder-aligned and source-aligned (sec 4.5). +- Complementary classes in #6030: market Y-cliques are D3 (q = 0) cosets. Cross-octet co-reading Ys have orthogonal normals at 125/131 sites (q = 1; MEASURED, base rate 46%). + +### 2.3 Tiling (EXACT; QUADHUB sec 4, audited by TILEAUDIT) +- For each 2-dim W in D3 there are 3 pairings, T in {135, 263, 384}. Meetable entry (j,i): i in a dim-3 port frame g, j in a dim-3 reader frame h, g ⊥ h. + | T | covers E | blocks | ranks | + |---|---|---|---| + | 135 | 4608/4992 | 316 | - | + | 263 | **exactly once** | 364 | 208 rank-3 + 156 rank-4, **no rank-1** | + | 384 | **exactly once** | 364 | **336 rank-1** + 16 rank-3 + 12 rank-4 | +- **Statement (TILEAUDIT wording).** Among all 512 global XORs and all 2187 per-W pairings, exactly 2 tile E exactly (263 and 384). **384 is the unique one with the rank-1 property.** + Not tested: octets pairing cosets of different W, unequal octets. +- Block graph: 28 full-rank coset blocks + 56 six-cycles (rank 3 each). Component rank 264; the sum of block ranks is 432 = "crossings". + 432 matches the ~440-448 boundary pieces measured on b0 and the swarm. (The early wording "364 rank-1 blocks" was loose; corrected.) +- **Octet frames have no readers (EXACT, 14/14).** So no live piece can sit at O_r, and **O_r is a pure cleanup frame**: only registers that are done may stop there (QUADHUB sec 1). +- The swarm realises the tiling (MEASURED): + - #5907 is octet-laminar at both ends, and all 62 dim-5 births sit at O^perp (the 16 dim-7/8 births do not); + - 162/187 of its 3 -> 6 helper MOVEs carry a block piece (no null test was run). + - #6030 reproduces the dual census exactly (MARKETORIGIN). +- The meet model's 8518 forced residual is MODEL and was not verified by the audit. + +**Summary of sec 2.** E8 fixes the signal. Parity forces D3 pairs. The rank-1 tiling forces the octets T = 384. Reader-free octet frames force hubs to be cleanup frames, and their duals are the market frames. +None of this is a template copied from the swarm: each piece falls out of E. + +--- + +## 3. The principles and the derivation map (PRINCIPLES.md) + +### 3.1 The principles +- **P1 Cost (SPEC).** kappa depends only on R0 (chain taxes) and the paid owned ranks; events are free. Facts 1.2(a)-(d). +- **P3 Nesting (SPEC F1/F2).** One frame per dim per register, ascending and nested. Two registers interact only at a common frame. A Y's frames lie inside Q_j. + - **P3a content-in-frame (PROVED).** The x-support of a public register lies on the ports of its current frame. + *Proof.* Induction over the program: X_i starts at , an ADD at a common frame f moves only f-supported content, and a MOVE goes to a superset frame. + Owned reads are exempt. ∎ Checked on #6030 (cif.py): 18372 public ADDs, 0 violations outside owned-tainted registers. + - **P3b dim budget.** Above G a register gains at most one piece direction per dim. +- **P4 Geometry (instance data).** Sec 2: the code, D3 cosets, the T = 384 tiling, reader-free O, and parity. +- **P2 Conservation (THEOREM of P3 + op semantics).** + - (P2x) span(arrivals) = span(departures) in x where nobody ends (SPAN5, a projection of JR); + - (P2j) the same over junk, with the junk-ratio law (PROVLP); + - **(P2c) outflow-corank law (PROVED, count form).** Let Phi_phi map the departures at a birth frame phi to the uncleanable finals (Ys, and registers ending below F9). + *Proof.* The block T at phi is invertible. A newborn's junk must vanish from those finals; a 0-born register's junk can be cancelled by F0 pre-reads. + So the newborn columns of T are |N| independent vectors in ker Phi_phi, and **#newborns(phi) <= #registers(phi) - rank Phi_phi**. ∎ + - EXACT check: the 3-proxy + 1-skip G0 variant (7 registers at G, rank 4) is UNSOLVABLE in full coordinates. + - **OPEN (placement form):** "the 0-born registers span the outflow". It holds under the realiser's load convention only (PRINCIPLES gap 0). + +**Minimality (PROVED in the sense stated).** Irreducible = {P1, P3, P4}. P1 is the only source of "which feasible option", and P3 the only source of feasibility. + +**Two corrections to the conjectured principle list.** +- K5 ("never park at the reader's final frame") *contradicts* P1, since the final-frame park is tax-cheaper. It is a junk effect: MODEL, MEASURED. +- "Defer cleanup to F9" is not a cost rule: it follows from P3 (every F9 row is a unit row) plus free events. + +### 3.2 Derivation map (compressed; full table in PRINCIPLES sec 3) +| rule | side | from | status | +|---|---|---|---| +| M1 #proxies >= rank of served-Y space (4, or 3 in a triangle) | market | P2c | PROVED-necessary | +| M2 market saturated: births = members - rank | market | P1 + P2c | PROVED (column model) | +| M3 pay rule 3.48/birth - 2.70/proxy | market | P1 | PROVED | +| M5 Y-clique = D3 coset; triangle anchor = 4th affine point | market | P4 | EXACT | +| B1 <= 2 pieces per member by dim 7, so 8 members | top | P3a + P3b | PROVED | +| B2 served Ys = residual rows | top | P2x | EXACT | +| B3 unique pair matching inside both Q's | top | P3 + P2x | PROVED-necessary, EXACT unique | +| B3b triangle: single-Y pair meets at Q (no d7 stop) | top | P1 + P3 | PROVED | +| H0 hub of octet r is at O_r | hub | P4 + P3 | PROVED | +| H1/H2 span conservation; departures pinned by D | hub | P2 | PROVED / EXACT | +| H3 8 = 4 up + 4 down; ender leaves as e_a + v_a | hub | P2 + P3 | EXACT ("up = octet characters" MEASURED) | +| H4 late visitors span the down space | hub | P2 (Redundancy Lemma) | PROVED | +| T1-T3 twins: arrival values count; twin iff P-span circuit; tied <= circuits | hub | P2 (JR) | PROVED | +| T5 hub pay rule 4 x 6.18 - (down rank) x 2.70 | hub | P1 + H4 | PROVED | +| A1 one register cannot sit in two dual cones | routing | P3 | PROVED | +| R1 Y_j reaches s only at f_d(s) <= Q_j | routing | P3 | PROVED | +| R2 Y stop (<= 5.55) beats courier (>= 6.15) | routing | P1 | EXACT | +| R0 direct low read iff c <= e, free slot, nests | routing | P3 + P3a | PROVED-necessary; sufficiency MEASURED 131/131 | +| R4 exit E implies q_low ⊥ q_high | routing | P3 + parity | PROVED given E | +| S0 sandwich L <= f <= U | skeleton | P3 + P3a | PROVED | +| S2 level = cheaper end | skeleton | P1(a) | PROVED | +| S1 closure f = L or f = U | skeleton | P1 + P3 | PROVED given S0 is the only constraint (MEASURED 504/507) | +| S3 completion = span(piece) | skeleton | P3a + P4 | PROVED lower bound; tight 101/131 | +| S5/K1 read in place before parking/copying | skeleton | P1 + P3 | PROVED | +| C-F9 defer cleanup to F9 | all | P3 + free events | EXACT | +Count: 17 derive (PROVED/EXACT), 4 derive given one measured premise, 7 do not reduce (sec 8.3). + +### 3.3 Generativity (EXACT; PRINCIPLES sec 5, PSOLVE6030) +A CP-SAT column solver that knows only P1-P4 (no pairing, proxy, birth or frame-list rule) re-derives market columns at the swarm's tax: +- f118 (8-port): OPTIMAL 69.092, **identical** to the swarm (pair frames 969-972, 4 x (0,5,6,7,8,9) + 4 x (5,6,7,8,9)); +- f1049 (triangle): OPTIMAL 57.364, an equal-tax P1(c) variant. +Both are realised LEGAL at #6030's kappa (SPAN5 0 / JR 0 on 999/999, native 0/2922). PSOLVE6030 extends this to 12 of the 14 duals, 2 of them (1027/115) with the E1 channel added (sec 6). +**The negative that taught P2c:** the natural rule "#proxies >= rank of the newborns' adjoints" gave a column 2.70 cheaper that is infeasible (kernel dim 3 < 4 newborns). + +--- + +## 4. The five sides of the design + +Notation per side: **rules** (with status), **rebuild** (what was stripped / what was kept), **evidence**. Every rebuild below is a *strip-and-rebuild*: +one class of events or stops is deleted and re-solved from D = target - replay(rest), with no swarm coefficient, pairing, proxy set or time read. +Common checks: `tk price` = #6030's kappa, `validate.py --all` SPAN5 law 0 / JR 0 on 999/999 frames, and `tk check --native` 0 bad of 2922 frame pairs. + +### 4.1 Markets at the duals G_r (ALIGNLAW sec 4-5, MKT4, MARKETORIGIN, PSOLVE6030) +**What a market is (MEASURED + EXACT).** G_r is a pure junk-cancel lounge. Members are 8 helpers: 3-4 proxies (0,5,6,7,8,9) and 4-5 newborns (5,6,7,8,9). +The only events at G are proxy += c * newborn loads. +- Rank is created at F0: k = 3-4 Ys of one D3 coset pre-read all k unwritten proxies (a K_{k,k} block). In a 7-port octet the coset is a triangle, and its missing 4th affine point IS the anchor. +- 62/62 births have their adjoint in the span of their pre-readers' adjoints (MEASURED: numeric lstsq < 1e-9, weak test, no replay). + +**Rules.** +| rule | content | status | +|---|---|---| +| A1 | one register cannot serve two dual cones | PROVED-necessary | +| B1 | dim budget: <= 2 pieces per member, 8 members | PROVED-necessary | +| B2 | served Ys = residual rows; exactly 8 of 22 candidate pieces on every 8-port dual | EXACT | +| B3 | the unique perfect matching with pair frames inside both Qs, invertible 2x2 block; pieces butterfly on the complementary matching (self-dual 16-register top) | EXACT unique on 10/10 (matching); complementary butterfly MEASURED | +| B4 | closed-form butterfly coefficients | EXACT | +| C1 = M1 | #proxies = rank of served-Y space | PROVED-necessary | +| C2 | the loads solve linearly | EXACT-sufficient by construction | +| C3 | proxy count forced, identity free (24/56 subsets realise at G=1049) | EXACT examples | +| C4 = M2 | saturated: 5/3 on G0 infeasible 4/4 | PROVED in column model; realiser evidence not independent (tool limit) | +| B1' | the read unit is the d6 frame, not the register | PROVED | +| E1 | a dim-8 stop read downstream (owned relay/public hub) is a served target | EXACT-sufficient; relay skeleton MODEL | +| E2 | a resident at G after the channel was fed is a readable source | EXACT-sufficient | +| O1 | (0,5) ender as a pure junk source | MODEL | +| O2 | owned scratch at G (cyclic/singular update) | MODEL, **not constructed** | + +**Rebuild evidence.** +| duals | result | +|---|---| +| 118, 1050, 116, 1048, 114, 1052 (8-port); 1049, 1051, 1053, 120 (triangle) | every member event deleted; LEGAL, **kappa = #6030** (ALIGNLAW) | +| 1027, 115 (root channel) | E1 + B1'; **identical** kappa, pairs = swarm's (MKT4) | +| 1031, 117 (owned-assisted) | LEGAL at **-1.4314e-6** = exactly one proxy conversion (6.18 R0) each: 4 up-going proxies replace 3 + ender because O2 is unbuilt (MKT4) | +- MKTO2 (`ext/MKTO2/`) attempted O2 (gate/scratch realiser, ablations). It left code and output words but **no notes and no STATE line**, so no result is claimed here. + +**Pricing (EXACT, no-mechanism yardstick).** 3.48 per newborn - 2.70 per proxy: +3.10 per 4/4 market (x8), +9.29 per 5/3, +2.00 at 143. Total **73.3 R0**, confirmed independently (m5_cf.py 73.27). + +### 4.2 Hubs at the octet frames O_r (HUBRULES, OWNEDHUB, TWINORIGIN, TOPGEN) +**What a hub is.** O_r is reader-free (sec 2.3), so the hub is where the octet's bottom registers finish. Members: +- enders (0-born 01234 helpers); +- X suppliers with chains 1234(8)9 (X is *done at dim 3* and stops at O); +- a 0123489 mate; +- late 012349 helpers. + +**Rules.** +| rule | content | status | +|---|---|---| +| H0 | hub of octet r at O_r | PROVED-necessary | +| H1 | span conservation of every ADD/SCALE block | PROVED | +| H2 | continuing departures are unique given D and equal the swarm's | EXACT | +| H3 | 4-ender hub: the 8-dim port space splits 4 UP (octet characters for the top) + 4 DOWN; each ender leaves as e_a + v_a with v_a UNIQUE | EXACT per hub (given arrivals); up = characters MEASURED | +| H4 | down vectors leave only via later arrivals holding them; the late visitors must span rank 4; derived cleaners = TWINORIGIN's supplier set register for register; dropping any one infeasible | PROVED-necessary | +| H5 | block realisation (split V = W + ) | EXACT-sufficient by construction | +| twin R1-R3 | arrival values count; s is a twin iff P(A_s) in the span of the other survivors; tied enders <= circuits | PROVED | +| twin R4 | F0-preloaded 0-born mate + d2-butterflied X pair in g + X_c <-> mate butterfly | MEASURED construction | +| twin R5 | pay rule: enabling circuit stops < tied units x s_v | EXACT | +| time-ordered pinning | a later arrival = ARR0 + earlier departures' changes (triangular in time) | EXACT (33/33 at 1090/1091) | +Free (MEASURED): event order inside blocks, block timing, and which down vectors ride X mains vs helpers. + +**Rebuild evidence.** +- 18/18 public end frames (dim-4 hubs 232, 234, 235, 237, 242, 244, 306, 516, plus dims 2/5/6/7/8 incl. relay 246): every event at g deleted (85-93 per dim-4 hub). All LEGAL at exact kappa. +- 10 jointly: kappa .003125811557911897, 22676 events. +- Owned hubs 240/243/1090/1091: rebuilt by time-ordered pinning. With the 10 public hubs, 14 jointly LEGAL at exact kappa, 22605 events. +- Twin loading at dims 0-2 rebuilt for 424/602/232/235: all coefficients equal the swarm's. + - Scope: the relay/reader *structure* is taken from the TWINORIGIN trace. The coefficients are pinned by descent given fixed downstream readers (MEASURED; uniqueness not tested). +- **hsolve (TOPGEN, chain level):** strip every event and every stop at O_r. The nesting + D-pinning + H4 + min-tax solver regenerates hubs 235/232/242/244/237/234 **uniquely = swarm**. + The candidates are about the members, so the hub is rigid. Octet pair 0 (hub 235 + market 118) in one word: exact kappa, shipcheck as-is. +- No candidate: 89 single stop drops 0 LEGAL; the 26 late-visitor drops are PROVED infeasible. + +**Pricing (EXACT, no-mechanism yardstick).** Ender save 6.18 if its O stop does content work, else 3.48; enabling suppliers and owned parks are charged. +4-hubs +13.92 each, 240 +21.08, 243 +24.56, ... Total **+143.2** (gross 234.9 - 91.7). Twin-specific enabling cost: 29.8. +Each 4-hub pure X pair secures >= 2 ends: **>= +6.96 per hub (PROVED lower bound, rest fixed)**. + +### 4.3 Routing: reader-level split of shared pieces (YROUTE, YREADORIGIN) +**The mechanism (MEASURED; cost EXACT).** A content source needed by two reader octets is read at *two different levels of its own chain*: +one octet's Ys descend to it low (Y stop at dim 2-3, 2.8-3.6), and it climbs into the other octet's dual cone. It is never copied (9.89) or un-identified (8.40). +- #6030: 99/468 Y content sources serve >= 2 reader octets (238 reads, 131 non-primary sites). P1: 11/476. + +**Rules.** +| rule | content | status | +|---|---|---| +| A1 | one register cannot serve two dual cones | PROVED | +| R0 | a direct low read needs completion level c <= exit level e, a free dim-e slot on Y_a, and f_e(s) nesting between Y_a's stops | PROVED-necessary; sufficient MEASURED 131/131 | +| R1 | Y_j reaches s only at f_d(s) <= Q_j | PROVED | +| R1x | every read is at the reader's own EXIT frame | MEASURED 237/238 (not content-forced: 93/131 have a lower frame with the same x-content) | +| R1t | the read happens once s is settled | MEASURED 55/55 | +| R2 | a Y stop pays iff it is cheaper than the carrier it displaces | EXACT | +| R3 | primary = max-exit octet | MEASURED 78/99 | +| R4 | the exit step adjoins the low reader's own port, so q_low ⊥ q_high | mechanism PROVED given E; E MEASURED 166/171 | +| R5 | stream law | MODEL | +**Route B reconciled (EXACT, one inequality R2).** In route B a Y stop displaces only a 1.39 segment, so it loses. In #6030 it displaces a full courier (>= 6.15), so it wins. + +**Rebuild evidence (EXACT).** For each of the 55 (primary, low) octet pairs, every non-primary read and every emptied Y stop was deleted (131 sites, 116 stops). +Rebuilt from R1x + R1t + nesting over all 499 candidates by one exact solve: **55/55 UNIQUE solution = the swarm's reads** (coefficients 76 x 1, 55 x -1/2). +All 131 jointly (by composition; a one-shot strip is bilinear with a 17-dim null space): same event multiset, exact kappa, all checks. +Scope: the source chains are kept. + +**Pricing.** Against the honest courier counterfactual: +505.9 (couriers 1046.5 - dedicated Y stops 347.0 - source visits 186.5; 0/99 sources negative). +Cheaper local carriers (MODEL legality) give the bracket **[391.7, 505.9], central 447.7**. +- The ALIGNLAW header's "~110 R0 routing" is the same mechanism measured against *P1's* cheaper-than-courier routing, not against couriers. Both figures are correct on their own yardsticks. + +### 4.4 Skeleton: source chains (SKELORIGIN, RESKEL6030) +**What the skeleton is (EXACT census, 99 multi-octet sources).** +- Completion stops: the piece is assembled at span(piece). Tight 101/131: own port (1), a D3 pair (2), or a T=384 tiling frame g (3). +- Park stops: 91 read-only stops at dims 3/5/6/7 = 14/36/19/12, where a low reader's Y meets the source before the source absorbs that reader's port. +- No source visits G_r or O_r, so the skeleton is disjoint from markets and hubs. + +**Rules.** +| rule | content | status | +|---|---|---| +| S0 | sandwich L <= f <= U (join of content + previous frames; meet of next frames + Q_Y) | PROVED (content term via P3a) | +| S1 | f = L or f = U | PROVED given S0 is the only constraint; MEASURED 504/507 | +| S2 | level = cheaper end (concave tax) | PROVED; 23 exact ties are free | +| S3 | completion = span(piece) | PROVED lower bound, tight 101/131 | +| S4 | exit adjoins the low reader's own port (= YROUTE E) | MEASURED 131/131 | +| S5 | read in place when it nests, else one park per closure component | EXACT cost | +| K5 | never park at Q_Y unless forced | MEASURED; anti-P1 (sec 3.1) | +| L4 (RESKEL) | the completion frame is a closure over *everything co-present* | EXACT on 288/288 write visits | + +**Rebuild evidence.** Per low-reader octet, every non-primary read was deleted with its emptied park and Y stops. Parks were rebuilt from S0-S5 + K5, then routing by YROUTE. +- **12/14 octets EXACT** (chains, event multiset, kappa); octets 5 and 12 LEGAL at equal kappa (one tie each). +- 12 octets + 10 hubs jointly: exact kappa, all checks. A wrong same-level park is UNSOLVABLE (negative control). +- Scope: the (s, Y) incidence is taken from YROUTE; completion stops with writes are kept. The tie-break is not pinned (a balance rule gets 20/23). + +**Trade (EXACT tax).** 91 parks 186.5 + dedicated Y stops 347.0 against couriers 1046.5: net 512.9 (the per-source form of sec 4.3's +505.9). + +### 4.5 Signal: root feeds and returns (SIGPIN) +**Cost (EXACT).** 273.25 = sigmarg 233.1 + owned staging 40.15. Honest: **317.4** (+44.2 of fan-in stops booked as residual by sigmarg; 330.0 with shared partner stops). +| | feeder-aligned roots (4) | source-aligned roots (4) | exchange hubs (5) | +|---|---|---|---| +| total (honest) | 137.7 | 154.9 | 24.8 | + +**Rules.** +| rule | content | status | +|---|---|---| +| D0 | every descent frame contains l_k and lies in H_k; one root per frame; 7 paid units per root | PROVED | +| D1 | l-octet roots park at O_r (dim 4) and a 3-port dim-3 frame; source-aligned roots stage at a 20-port relay's dim-7 frame | MEASURED 8/8; cost EXACT | +| F1 | S4_k on each whole octet in H_k is fed by an UP-departure of that octet's hub; at each 4-hub exactly 2 of 4 up-departures feed roots | MEASURED 27/28; rebuild EXACT | +| F2 | 2+2 pieces O_r ∩ H_k fed by 2 dual-cone top members (dim-8 frame = H_k) + one dim-7 relay | MEASURED 4/4; rebuild EXACT | +| R1 | return: 2-4 bottom helpers/Ys take a dim-1 stop at | rebuild EXACT at chain level | +| R2 | couriers cancel at the parked copy or at the dim-7 relay | MEASURED | + +**Rebuild evidence (EXACT).** Per root, every feed (or every return read) plus the 26 emptied public stops was stripped and re-solved. +- Feeds 8/8 MATCH the swarm's events; reads re-derive every stop (events free at equal kappa). +- All 16 steps jointly: exact kappa, all checks, `tk shipcheck --base 6030` SHIPPABLE AS-IS. +- Scope: the descent skeleton, fan-in ADDs and exchange hubs are kept. + +**Why the signal is cheap.** The residual top already holds the roots' sums: hub up-departures (F1) and dual-cone members (F2). This couples the signal to sides 4.1-4.2. + +### 4.6 Capstone: all five composed (COMPOSE, MKTCOMPACT) — EXACT +The chain SKELORIGIN (14 octets) -> YROUTE -> HUBRULES (10 hubs) -> ALIGNLAW markets (10 duals) -> SIGPIN (16 steps) was run in one word: +- 22/22 steps OK; **kappa .003125811557911897**; SPAN5/JR 0/999; native 0/2922. +- After MKTCOMPACT batches the market cleanup at a mid-word time: **22860 events** (was 30187, over the 26000 literal). No `--freebounds` needed. +- **The five rule sets are mutually consistent.** + +**Inputs still taken from #6030 (COMPOSE sec 2; verbatim scope):** +1. the (source, reader-Y) incidence: which octet climbs and which reads low; +2. the register population and every unstripped chain (completion stops with writes, X/Y main chains); +3. hub arrivals at dims 0-2 (twin loading; partly rebuilt by OWNEDHUB), and 8 single-built end frames not in the joint; +4. market members (8 per dual) and the pieces' d6 frames; duals 1027/115/1031/117 not in the joint chain; +5. signal descent D1, the fan-in ADDs, the 5 exchange hubs; +6. (closed by MKTCOMPACT) event compaction. + +**What the rules pin, in one sentence.** Given the population and the incidence, every event, coefficient and stop of #6030 that was stripped is the *unique* (or equal-kappa) solution of its side's rules. + +--- + +## 5. The honest lifetime ledger + +### 5.1 Three yardsticks (name them, or the numbers look contradictory) +| yardstick | definition | used by | +|---|---|---| +| **forced** | every helper born 0 / ended 9, stop set unchanged (L = 872) | LAWFIRST, ALIGNLAW 1b, SURGERY | +| **no-mechanism (honest)** | drop a stop only if it does no content work; charge enabling suppliers and owned parks | ALIGNLAW 1d, TWINORIGIN, ENDREST, YREADORIGIN | +| **drop-all-O stops** | chain tax only, every O_r stop removed, feasibility of the dropped content work unchecked | TOPGEN nohub.py (MODEL) | + +### 5.2 Ledger on the honest yardstick (EXACT chain taxes; legality MODEL where noted) +| mechanism | net R0 | source | status | +|---|---|---|---| +| markets (14 duals) | **73.3** | ALIGNLAW 1d, MARKETORIGIN m5_cf | EXACT | +| twin-tied ends at hubs (15 tied frames) | **143.2** | TWINORIGIN | EXACT tax; content flag MEASURED | +| other ends (36) + non-market births (36) + interaction | **60.4** (to 70.9 with owned parks uncharged) | ENDREST | EXACT tax; legality 35/36 weak test; no replay | +| reader-level Y reads (99 sources) | **447.7 [391.7, 505.9]** | YREADORIGIN | EXACT tax; MODEL legality | +| **sum** | **724.6 [668.6, 782.8]** | | | +| joint strip of all mechanisms (ALIGNGEN) | 769.8 (no-mechanism word 8518.4 vs 7748.63) | ALIGNGEN | EXACT | +- The joint value exceeds the sub-lane sum by about 45: the mechanisms interact. About 147 [89, 203] of the forced 872 is not attributed. + This is **a yardstick residue, not a hunt target**: 872 is forced-split currency, while the Y-read value is a routing saving. +- Like-for-like decomposition (derived, not a check): 725 = 385 (gap to P1) + ~340 (P1's no-mechanism base is cheaper than #6030 stripped to couriers). + +### 5.3 Superseded figures (old -> corrected) +| claim | old | corrected | why | source | +|---|---|---|---|---| +| market net | 241 / ~236 (forced) | **73.3** | the newborn's dim-5 stop exists only for the market | ALIGNLAW 1d, MARKETORIGIN check | +| hub / tied ends | 88-142 net, 277.3 gross (forced) | **143.2** net (gross 234.9) | honest content-work flag | TWINORIGIN | +| other ends + births | ~315 gross (163 + 152 "unpriced") | **60.4** | 12/36 ends and 27/36 births have honest gross 0 | ENDREST | +| SURGERY's markets / hubs | 259 / 198 net | 73.3 / 143.2 | forced yardstick | ALIGNLAW sec 4 note | +| skeleton premium vs P1 | +321 | **+32** (mains +455) | the +321 compared with-signal vs residual-only | ALIGNLAW 1a | +| SKELGEN residual vs swarm | +33 | **~+70** | honest residual ~7705 (8022.3 - 317.4) | SIGPIN | +| octet P1 realised | 7703 | 8096 (OCTLIFE) | the LKMEET premise was off the critical path | LKMEET header | +| tiling blocks | "364 rank-1" | 336 rank-1 + 28 full-rank | wording | TILEAUDIT | +| PROVED R0 floor | 1521.5 (NETLB) / 1666.9 (SIGNOBS) | invalid -> 742.9 -> 736.3 -> 752.85 -> **794.53** | sec 7 | FRAMELP..ORBITLP | + +### 5.4 The third yardstick, stated without contradiction +TOPGEN's nohub counterfactual drops every O_r stop of #6030: R0 changes by **-117.9** (X -132.8, H members -141.7, enders +156.6). +It measures what the O stops cost in chain tax, not whether their content work could happen elsewhere (unchecked, MODEL). TWINORIGIN's +143.2 charges only the enabling stops +(those doing no content work). The two numbers answer different questions. Neither refutes the other. + +### 5.5 Signal (sec 4.5) +273.25 sigmarg / **317.4 honest** / 330.0 with shared partner stops. Like-for-like, the honest residual of #6030 is ~7705, and the residual bar at swarm-honest signal is ~7698. + +--- + +## 6. Optimality and rigidity results (each with its scope) +**Local rigidity is not optimality.** Every row below is relative to #6030's frozen remainder, or to a stated column model. + +| result | scope | tests | outcome | status | +|---|---|---|---|---| +| market columns OPTIMAL (PRINCIPLES, PSOLVE6030) | P1-P4 column model, rest frozen, --maxextra 1, placement form of P2c | 14 duals | 12 OPTIMAL = swarm tax (incl. 1027/115 with E1); 1031/117 outside solver kinds | EXACT (CP-SAT OPTIMAL) | +| joint 2-column solves | 12 clean duals | census | separable: no shared member, piece or target | EXACT | +| 9th foreign register at G (H709 @118) | within the column; P2c premise | 1 lead | **PROVED infeasible**: a visitor whose G-arrival row is outside the readable content eats one kernel dim (rank <= 7 < 8) | PROVED | +| hubs | rest frozen | 89 drops | 0 LEGAL; 26 PROVED infeasible; departures unique (H2) | EXACT/PROVED | +| hub solver hsolve | chain level, 6 hubs | 6 | unique = swarm | EXACT | +| routing | source chains kept | 55 pairs | unique = swarm; 1 nest-feasible lower frame unsolvable | EXACT | +| anti-K5 Q_Y parks per site | per site | 13 | 9 UNSOLVABLE, 3 SCHEDULE (untested), 1 equal | EXACT (numeric GN) | +| SURGERY: kills, kill+rehost | exact linear replanner at existing co-presences | 1817 | 0 feasible; 9 Lemma-pass ends are receiver-twin illusions | EXACT within scope | +| SURGERY2: compound skeleton edits | inline couriers, source-visit deletes, Y-stop moves | ~1250 | 0 feasible; 395/397 dedicated source visits forced by readers' chains; 22 couriers 0 removable | EXACT | +| RESKEL6030: skeleton classes | T ties, M park merges, O orientation flip, C completion lifts | 140 runs + 3 geometry screens | T: dk = 0 (58 legal; full chain re-run exact). M: 0/64 by geometry (empty bracket 32/32). O: 0/24. C: 266 one level, 22 argmin/tie, 0 cheaper; s495 dk -1.05e-7 | EXACT | +| market saturation | column model | 5/3 on G0 | infeasible 4/4; from scratch 0/56 realise | PROVED (P2c, column model); realiser 0/56 is not an independent proof (tool limit) | +| twin pure X pair | rest fixed | per 4-hub | >= +6.96 | PROVED lower bound | + +**What these say together.** Within each side, given the others, #6030 is the unique (or equal-kappa) optimum the rules allow. Every cross-side edit we could express is infeasible. +The free choices (23 S2 ties, proxy identity, block order) are kappa-neutral (EXACT). +**What they do not say.** Nothing here excludes a different skeleton class, a different register population, or a different incidence (sec 8). + +--- + +## 7. Lower bounds +**Setting.** A type LP over chain types, with rows from proved laws. The certificate is exact rational weak duality, re-checked independently. +- **SCOPE:** own = 22 / owns = 18 dirty helper endpoints (measured on #5907), and R0 <= 8000 for column bounds. + +| step | floor (R0) | % of 7990 | what changed | status | +|---|---|---|---|---| +| NETLB / SIGNOBS (inherited) | 1521.5 / 1666.9 | - | omitted helper types that read at their birth frame (legal per legal.py; toy checked); with them the old rows give 82.3 | **INVALID** (FRAMELP sec 0) | +| FRAMELP | 742.9 | 9.3 | Theorem JR (junk-aware frame rank law) | superseded by a soundness fix | +| PROVLP | **736.28** | 9.2 | fix: keep zero-coverage types (FRAMELP dropped legal ones); junk-ratio / provenance laws PL, LCL, CL, LCR | PROVED (SCOPE) | +| CHARTLP | **752.85** | 9.42 | Redundancy Lemma + coverage corollary | PROVED (SCOPE) | +| ORBITLP | **794.53** | **9.94** | TIE-CAP | PROVED (SCOPE), `recheck.py cert_t1.pkl` matches | +| MODEL tiers | 1631.75 (no late-born ties) / 1668.76 (no ties) | 20.4 / 20.9 | | **refuted as laws** by the clean legal toy T8 | + +### 7.1 Theorem JR (PROVED; FRAMELP sec 1) +At a chart m, let A_m = arrival values + initial values of registers born at m (in the local program P'). +- (i) Every value held at m lies in span(A_m). *Proof:* every op that changes a public value at m reads a public source at m. +- (ii) With N = the clean helper enders at m, the unit vectors e_h (h in N) lie in pi(span A_m) ∩ ker phi. Hence + rho_m <= Cc(m) + min(PJc(m), NCe(m)) + [Y ends at m] + [X born at m] + dirty(m). +- (iii) Coverage: the entries covered by landings at m are <= R(d,v) rho_m. +- (iv) The transpose gives the departure mirror. +P2x/SPAN5 is a projection of JR. + +### 7.2 Redundancy Lemma (PROVED; CHARTLP; deficiency form) +Enders N at frame f need survivors S with q = dim(xspan(A_f)/xspan(S)) <= |S| - rank_P(S), where P drops e_N and the owned symbols. +A clean ender's last hop adds x-rank only through tied survivors, so **a twin must be a second copy (a survivor whose arrival agrees with the ender outside e_N), never the receiver of a merge.** +- Validated: 0 violations on #5907's 82 realised early ends (LAWFIRST host.py), and tight in every tie. +- This lemma is the bridge between the lower bounds and the design: H4 and twin R2 are instances of it. + +### 7.3 TIE-CAP (PROVED; ORBITLP sec 2) +A tie element is one ender's own content, so it covers at most that ender's own last-hop cap C(last, 9 - v), not the generic R(d,v) +(for example R(8,8) = 30 vs 2 for a (2,8) single hop). This lifted the floor by +41.7. + +### 7.4 Gap +The floor is 794.53 against #6030's ~8000. Custody/containment chart pricing gives 0 lift (ORBITLP sec 1, scoped argument), and an orbit LP was not built. +The open lever is a per-unit tie cost (twin + displaced coordinate). **The lower bounds certify about 10% of the word; they say nothing about whether #6030 is globally optimal.** + +### 7.5 Addendum (FLOOR2, Oct 28) -- per-unit tie cost: PROVED floor 813.31 +> **ADDENDUM (FLOOR2; supersedes the 794.53 figure in the table above and in the Summary).** +> - **Lemma R+ (PROVED; the original lane notes (not shipped)).** At a chart g, let E be any set of clean helper enders and C the other arrivals. Then +> dim(xspan A_g / xspan C) <= #(C-arrivals holding some e_h, h in E). So a clean ender is NEVER a tie token, whatever its last hop: +> every tie unit is charged a distinct continuing register, a Y ending at g, or a dirty ender (ORBITLP's open lever, in count form; the +> displaced-coordinate escape needs no pinning). Mirror by the transpose. EXACT: 0 violations on #5907, #6030 and both transposes +> (136 chart/threshold checks, tight in 70); toys T7-T11 OK (T11 = the old optimum's free single-hop token, built: forced dirty). +> - **PROVED floor 813.31 R0** (`flp.py ... red tcap rplus`, exact recheck matches): **10.18% of 7990, 10.50% of #6030's residual 7748.63**. +> SCOPE unchanged (own = 22 / owns = 18, R0 <= 8000). MODEL tiers unchanged (lbt 1631.75, notie 1668.76). +> - P2c (count form), the parity lemmas, the X-split, all-roots-alike and the skeleton condition add no row with force in a type LP: +> P2c is implied by JR (iv); the skeleton condition by Theorem LC; parity/X-split are chart-identity facts; all-roots-alike is owned-layer. +> - The 20-30% target is NOT reached. What remains is chart identity (custody: a token's previous chart must contain the ender's birth chart), +> which needs the orbit LP. Binding now: cover rows both sides, n1 (lines), line-born newborns' first hops (tnD), dirty budgets (~2-3 R0/unit). + +### 7.6 Addendum (CHARTORB, Oct 28) -- SOUNDNESS CORRECTION: the 7.1-7.5 floors are INVALID; corrected PROVED floor 754.14 +> **ADDENDUM (CHARTORB; supersedes the figures in the table above, in 7.5 and in the Summary).** +> - **INVALID (EXACT):** the inherited `cap48` row bounds the SUM of per-crossing caps by 48 n_u (n_1 <= 104). Frame capacity bounds only +> DISTINCT coverage per chart. #5811 / #6030 credit cov(2,1) >= 9618 > 4992, and #5907 mapped to type counts is INFEASIBLE in the FLOOR2 LP +> (min violation 118: n1 needs ~200 lines). So 742.9 (FRAMELP), 736.28, 752.85, 794.53 and 813.31 are not valid floors. Toy T12 shows the mechanism. +> - **Sound row (PROVED):** distinct level-d coverage by crossings whose last-effective chart has dim u is <= 48 n_u +> (rectangle P(c) x J(g) lies in P(c) x J(c)). **Corrected PROVED floor 754.14 R0 = 9.44% of 7990** (9.73% of 7748.63), exact recheck True. +> Same rows without R+ (ORBITLP config): 734.96. MODEL tiers: lbt 1551.73, notie 1576.08. +> **Swarm test passed:** #5907 and #6030, mapped to type counts, are feasible in the corrected LP (violation 0). Every future floor must pass this test. +> - **Chart-orbit LP not built (ceiling first).** In the corrected LP every tie/token row has dual 0. What binds is credited cover (668) and +> line/Q integrality (165). In general networks the five chart-level laws (private-content, junk-split, P2x, X-split, skeleton condition) +> reduce to JR (i)/(iv) and Theorem LC, which are already rows. Their extra force is SCOPE (#6030's skeleton class). +> A G-symmetric orbit LP adds geometry only. Probe (MODEL): cover inflated x1.066 gives 798.3, x1.2 gives 889.6. +> ESTIMATE ceiling about 10-11%, **not 20%**. Next lever: support presence on CREDITED coverage (the original lane notes (not shipped)). + +--- + +## 8. Open problems + +### 8.1 The skeleton class (the live frontier) +- The rules pin #6030 *given* its population and incidence. No generator yet produces that population from E. +- SKELGEN's oriented skeleton (from E -> tiling -> CP-SAT orientation) reaches residual 7774.8. With swarm-honest signal that is kappa .0031097 < bar (EXACT law arithmetic). +- The realised from-scratch word p1oF_r is kappa .0027748 (EXACT), 89% of the bar; its gap is the top. +- **TOPGEN ceiling (MODEL, provisional kill; scope: oriented p1o + hubs/markets as add-ons):** hubs cost about +12.7 each from scratch and eat the X climbs. + - EXACT geometry: no T=384 tiling port frame h is orthogonal to a foreign octet frame (0 of 14 x 14), so an oriented X cannot both stop at O_r and climb. + - Result: R0eq >= 8333 vs 8015.2. +- **The gap is the skeleton class, not the top:** #6030 without its O stops is ~7587 honest residual, about 200 below p1o at the same no-hub level (MODEL). +- Learnings for a class generator (RESKEL L1-L4, SURGERY2): + - ties are inert; + - one park per (source, reader octet), no sharing; + - count a copy's F0 readers before re-orienting it; + - price completion over the whole co-present set. +- **Open question:** which incidence (which octet climbs, which reads low; 99 multi-octet sources vs p1o's 18) is optimal, and can it be derived? + +### 8.2 Global optimality +- No PROVED statement bounds R0 above 794.53. The rigidity results are local, scoped to fixed population and incidence. +- **Open:** a lower bound that knows the tiling (a per-octet LP using O_r reader-freeness and P2c per frame), or a proof that the rule-pinned family is optimal within the octet class. +- PRINCIPLES gap 3 notes that P2c is already per-frame. That is the hopeful sign for scaling the column solver to an octet, then to the word. +- Also open: the P2c placement form (gap 0); Theorem R9F outside F (escape E1); O2 (6.18 R0 per dual at 1031/117). + +### 8.3 The 7 non-reducing regularities (PRINCIPLES sec 4) +> **Update (REGULAR7):** status column superseded by sec 10: R1t PROVED, K5 PROVED on all 13 candidate sites (not anti-P1: P1 + B3 + commutation), R3 dissolved (cf label), R1x reduced (not junk; nesting), ties free, up vectors pinned-or-gauge (EXACT flip), E MEASURED (skeleton class). + +| # | regularity | why it does not reduce | status / best lead | +|---|---|---|---| +| 1 | **E / S4 exit:** the step out of Q_a adjoins q_a (the reader's own port) | any port with odd dot to q_a would exit; 5 counterexamples (sources 2, 347, 443) | MEASURED 166/171. Lead: the tiling (which ports a cross-octet piece absorbs next). R4 (orthogonal co-readers) follows from it | +| 2 | R1x read at the exit frame | a lower frame has the same content at 93/131 sites; nesting + junk pin it | MEASURED 237/238 | +| 3 | R1t read when settled | no time principle in P1-P4 | MEASURED 55/55; MODEL reason P2j | +| 4 | K5 never park at Q_Y | contradicts P1 (tax-cheaper); full-coordinate failure is junk | MEASURED; per-site 9/9 algebraic tests hold (PSOLVE6030) | +| 5 | R3 primary = max-exit octet | 21 exceptions at equal kappa | MEASURED 78/99 | +| 6 | tie-breaks (23 S2 ties, proxy identity, block order) | equal kappa | free (EXACT: RESKEL L1) | +| 7 | up vectors = octet characters; which octet climbs | pinned by the top, not derived | MEASURED; **partly reduced:** SIGPIN F1 pins 2 of the 4 up-departures at each 4-hub as root characters (27/28), so only 2 per hub remain unexplained | +- **Most promising extension (PRINCIPLES gap 2):** a time-resolved P2j (outflow-corank per time window) may derive 2, 3 and 4 together. Items 1 and 7 look like tiling (P4) facts. No candidate fifth principle covers them. +- "Lazy absorption" is the L-branch of S1 and does not single out q_a. + +--- + +## 10. The seven regularities (REGULAR7, Oct 28; supersedes the status column of sec 8.3) +Details, censuses and code: the original lane notes (not shipped), `ext/REGULAR7/`. No CANDIDATE. + +**The tool (PROVED, op semantics).** *Commutation lemma C.* `Y += c s` commutes with every op that neither writes s nor reads Y; a SCALE of Y +only rescales c. Hence a read can be moved from (t1, f1) to (t2, f2) with identical finals iff s is not written and Y is not read in between +(and s, Y meet at f2). This is the exact form of the "time-resolved P2j" of PRINCIPLES gap 2. It needs no new principle. + +| # | regularity | status now | derivation sketch | +|---|---|---|---| +| 1 | E: the exit step adjoins q_a | **MEASURED 166/171, sharpened** | PROVED: every odd port (dot q_a odd) of the exit frame is newly absorbed (171/171). E = "the first odd pair s absorbs after a's read is a's own". Not a dual-cone fact (q_a in the dual at 0/59 cone exits; 107/166 exits at dim 3/4). Not content-forced (55/166). The exit frame is a kept completion stop, so E belongs to the skeleton class (8.1) | +| 2 | R1x read at the exit frame | **REDUCED** to S0-S2 + Y-chain nesting | At 163/170 reads with a lower completion frame, s is not written in between, so its value is the same and the old "junk" reason is wrong (at 135 Y is also unread, so finals agree by C). The read sits where the Y chain can meet s (lower frame nests at 1/93, YROUTE); that frame is the closure join/meet (S0-S2, PROVED). Residue: the Y chains (= incidence) | +| 3 | R1t read when settled | **PROVED** (normal form) | By C the read time is free within its commutation class; "settled" = its earliest point. kappa-inert (events free) | +| 4 | K5 never park at Q_Y | **PROVED on all 13 candidate sites**; general form MODEL for a pre-exit level <= 1 | By C a Q_Y read is admissible iff Y is not read afterwards. At 13/13 sites Y is read once later (12 by its D3-pair partner at the shared d7 frame, B3, where the d7 frame is the partner's only post-F0 meeting with s; 1 by helper 133, which carries it to an owned d8 read at t13486, long before its F9 meeting with s). Repair = a new stop (>= 2 ln 2 = 1.386) or a courier (>= 6.15); saving <= 1.116 (exact chain tax). Net >= +0.27 per site. The swarm's 2 Q_Y parks (into relay Y169) have no later read of Y, as predicted. **Corrects sec 3.1: K5 does not contradict P1; it is P1 + B3 + C.** | +| 5 | R3 primary = max-exit | **DISSOLVED** (accounting) | "Primary" is the courier counterfactual's label (YREADORIGIN), not part of the word; the max-exit octet is the one whose Q holds s's top frame (P3 ascent, true by definition). Design content = the incidence (8.1, open) | +| 6 | ties, proxy identity, block order | **FREE** (EXACT + PROVED) | RESKEL L1 (58 flips dk 0), M4 PP/NN LEGAL, 3P1Z (the G block exists iff dim ker C >= nb, whatever the born-ness) | +| 7 | up vectors = octet characters | **PINNED OR GAUGE** (PROVED + EXACT) | Of 112 registers leaving the 14 octet frames, 27 are read before F9 (9 by owned registers, 18 at dim-8 frames, root frames H_k by SKELCLASS I4): pinned by their readers (SIGPIN). 85 are read only at F9: by C, `u1 += lambda u2` at O_r undone at F9 changes the departure value and nothing else. EXACT flip at hub 235 (u35 += u107): LEGAL, kappa .003125811557911897 identical. "Characters" is the swarm's gauge | + +**Count after REGULAR7.** Of the 7: 4 PROVED or free (R1t, K5 scoped, ties/identity, up vectors), 1 dissolved (R3), 1 reduced to closure + the +incidence (R1x), 1 MEASURED (E). Both remaining residues (E, and R1x's Y chains) are properties of the skeleton class / incidence, i.e. sec 8.1. + +**Levers (task: is a free choice a CHOICE?).** The genuinely free choices (ties, proxy identity, the F9 gauge, read times) are kappa-neutral +by construction. The only non-neutral flip, anti-K5, loses by exact tax arithmetic at every site. No CANDIDATE. diff --git a/research/p104-designer-toolkit-v2/PRIMMINE-RULES.tsv b/research/p104-designer-toolkit-v2/PRIMMINE-RULES.tsv new file mode 100644 index 0000000000..181e853e84 --- /dev/null +++ b/research/p104-designer-toolkit-v2/PRIMMINE-RULES.tsv @@ -0,0 +1,1593 @@ +table LHS(A) RHS(B) class gain_ctx unlock_ctx lose_ctx max_gain weakest_precondition +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P1c+P8 5 27 14 0.0059 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 1<-2 -1; ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8+P1c 5 27 14 0.0059 c0<=n2 & c1<=n2 & c2<=n1 [residual lose=14] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP P1c+P1c+P8 5 27 14 0.0059 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP P1c+P1c+P8 5 27 14 0.0059 c0<=n1 & c1<=n0 & c1<=n2 [residual lose=14] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-0 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8+P1c 5 27 14 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P1c+P1c+P8 5 27 14 0.0059 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-1 1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8 3 9 1 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 1<-2 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-2 1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-2 1; ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 2<-1 1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-1 -1; CLEAR 3 DECOMP P1c+P8 3 9 1 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-1 1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c1==n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 2<-1 -1; ADD 2<-0 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-1 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 2<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c1==n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 2<-0 1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-2 1; ADD 0<-1 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 0<-1 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 0<-2 -1; CLEAR 3 DECOMP P1c+P8 3 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 3 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 2<-1 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 0<-2 1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 1<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 1<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 DECOMP P1c+P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-0 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 2 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; CLEAR 3 DECOMP P1c+P8 2 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 1; ADD 2<-1 -1 DECOMP P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 2 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 2 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-2 1; ADD 0<-1 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 2 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P3+P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 1<-0 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-0 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1; ADD 2<-0 1 DECOMP P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-0 1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 2<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-0 1; ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 2 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 1; ADD 2<-1 -1 DECOMP P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-2 1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 2 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1; ADD 2<-1 -1 DECOMP P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP P1c 2 0 16 0.0059 !c0==n0 & !c1==n1 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 1 27 30 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=12] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; CLEAR 3 DECOMP P3+P8 1 9 30 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=9] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 30 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=9] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 1<-2 1; ADD 2<-1 -1 DECOMP(CLSFIX rev) P1c+P1c+P1c+P1c 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 1<-2 1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-0 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c1==n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c1==n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-2 1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-0 -1; ADD 0<-2 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-2 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P1c+P3+P3 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 2<-0 -1; ADD 1<-3 -1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-2 -1; ADD 2<-1 -1; INIT 3; COPY 3<-2 -1; ADD 3<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP(deep) P3+P8 1 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 2<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 2<-3 1; ADD 0<-2 1; ADD 2<-1 1; CLEAR 3 DECOMP(deep) P3+P8 1 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-0 1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP(deep) P3+P8 1 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-0 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-1 1; CLEAR 3 DECOMP(deep) P3+P8 1 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c1==n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1 DECOMP(CLSFIX rev) P1c+P12+P1c 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-0 1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(CLSFIX rev) P1c+P1c+P12 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c1==n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; ADD 1<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P1c+P3+P3 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-0 1; ADD 2<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-0 -1; ADD 0<-2 1 DECOMP(CLSFIX rev) P1c+P12+P1c 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-0 -1; ADD 2<-0 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 1<-2 1; ADD 2<-1 -1 DECOMP(CLSFIX rev) P1c+P1c+P1c+P1c 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 2<-0 -1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 1<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-0 -1; ADD 2<-1 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-1 1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 1<-2 1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(CLSFIX rev) P1c+P3+P1c 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-0 1; ADD 2<-0 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 1<-2 1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP(CLSFIX rev) P1c+P3+P1c 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-2 1; ADD 1<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 3 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 1<-2 1; ADD 0<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-1 1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 1<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 1; INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 1<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P1c+P3+P3 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 2<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(CLSFIX rev) P1c+P1c+P1c+P1c 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1 DECOMP P1c+P3+P3+P1c 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP(CLSFIX rev) P1c+P1c+P1c+P1c 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 1<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-0 -1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-0 -1; ADD 1<-2 1; ADD 2<-1 -1; ADD 1<-2 -1 DECOMP(deep) P1c+P3+P3 1 0 16 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 1<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-2 1; ADD 2<-0 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(deep) P3+P8 1 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; ADD 0<-1 1; CLEAR 3 DECOMP(deep) P3+P8 1 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-2 1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 1<-0 -1; ADD 2<-0 1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 DECOMP(CLSFIX rev) P1c+P1c+P12 1 0 16 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 1 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1; CLEAR 3 DECOMP P3+P8 1 9 3 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c1==n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 27 30 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=12] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 30 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & !c2==n2 [residual lose=9] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 27 30 0.0059 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=12] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 30 0.0059 c0<=n2 & c2<=n0 & c2<=n1 & !c0==n0 [residual lose=9] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 1<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 2<-1 -1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-2 1; ADD 1<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c2==n2 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; CLEAR 3 DECOMP P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-2 1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-0 1; ADD 2<-1 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 1<-2 -1; ADD 0<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 2<-0 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-2 1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 2<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 1<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 1 27 3 0.0059 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n1 & !c2==n2 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 1 9 1 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c1<=n2 & c2<=n0 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; ADD 1<-0 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P1c+P3+P3+P1c 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 1<-3 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 0<-2 1; INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-2 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 1; INIT 3; COPY 3<-0 -1; ADD 0<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n2 & c2<=n1 & !c1==n1 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; ADD 0<-2 1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n1 & c1<=n2 & c2<=n0 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; ADD 1<-0 -1; CLEAR 3 DECOMP P3+P8 1 9 16 0.0059 c0<=n2 & c1<=n0 & c2<=n1 & !c0==n0 [residual lose=5] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-2 -1 DECOMP P1c+P3 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1; ADD 2<-1 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 1 0 1 0.0059 c0<=n1 & c0==n0 & !c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 1 0 1 0.0059 c0<=n1 & !c0==n0 & c1==n1 & !c2==n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n2 & !c1<=n0 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 37 30 0.0 c0<=n1 & c0<=n2 & c2<=n1 [residual lose=21] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 0 37 30 0.0 c0<=n1 & c0<=n2 & c1<=n2 [residual lose=21] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8+P6 0 37 16 0.0 c0<=n1 & c0<=n2 & c1<=n2 [residual lose=16] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 1<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 2<-0 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 30 0 0.0 !c1<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 2<-1 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-1 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8+P6 0 27 1 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-2 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-0 1; ADD 2<-0 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 2<-1 -1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 2<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 1<-2 1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3 0 9 1 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 0 27 1 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-0 -1; ADD 2<-0 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 1<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; ADD 2<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-2 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 3<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8+P6 0 46 3 0.0 c0<=n1 & c0<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 2<-1 -1; ADD 3<-1 1; ADD 0<-3 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P1c 0 9 3 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-1 1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & !c0<=n2 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 3<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8 0 46 3 0.0 c0<=n1 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P8+P1c 0 9 3 0.0 c0<=n1 & !c0<=n2 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-0 -1; ADD 3<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P12+P8+P1c 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 1<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8+P1c 0 18 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1; CLEAR 3 DECOMP P3+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 2<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 1<-2 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-2 -1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8+P6 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 1<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP(CLSFIX fwd) P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8+P1c 0 18 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n0 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 0 27 1 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-3 -1; CLEAR 3 DECOMP P1c+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 2<-0 1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-1 -1; ADD 2<-1 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & !c0<=n2 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-3 1; CLEAR 3 DECOMP P1c+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P3+P8 0 9 15 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8 0 18 16 0.0 c0<=n1 & c1<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12 0 9 15 0.0 c0<=n1 & !c0<=n2 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1; CLEAR 3 DECOMP P1c+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 1<-2 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3 0 9 1 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 1<-0 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 2<-0 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 1<-0 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 2<-1 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & !c0<=n2 & c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 3<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8+P6 0 46 3 0.0 c0<=n1 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 3<-2 1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(deep) P1c+P8 0 27 1 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 2<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 !c1<=n0 & c1<=n2 & c2<=n0 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-2 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8+P1c 0 18 3 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 3<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8 0 18 16 0.0 c0<=n1 & c1<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n2 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; CLEAR 3 DECOMP P8 0 27 0 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-0 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-3 1; CLEAR 3 DECOMP P3+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 3<-2 1; ADD 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP(deep) P1c+P8 0 27 1 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=1] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 47 30 0.0 c0<=n1 & c2<=n1 [residual lose=30] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-0 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c1<=n0 & !c2<=n0 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 2<-3 1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 3<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; CLEAR 3 DECOMP P8 0 27 3 0.0 c0<=n1 & c0<=n2 & c1<=n2 & c2<=n1 [residual lose=3] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 2<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-3 1; CLEAR 3 DECOMP P1c+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c1<=n0 & c1<=n2 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-3 1; CLEAR 3 DECOMP P3+P8 0 27 16 0.0 c0<=n1 & c0<=n2 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP P8 0 9 0 0.0 c0<=n1 & c2<=n0 & !c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-0 1; CLEAR 3 DECOMP(CLSFIX fwd) P3+P8 0 27 16 0.0 c0<=n1 & c1<=n0 & c2<=n0 & c2<=n1 [residual lose=7] +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 1<-0 1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c1<=n2 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; ADD 2<-1 1; CLEAR 3 DECOMP P8 0 18 0 0.0 !c1<=n0 & c1<=n2 & c2<=n1 +3pub/<=2own/L<=7 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP P8 0 18 0 0.0 c0<=n1 & c1<=n0 & !c1<=n2 +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P1c+P1c 30 54 84 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1 DECOMP P1c+P1c 30 54 84 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P12 30 54 84 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P1c+P1c 30 54 84 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-2 1; ADD 3<-1 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 3<-1 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-2 1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-2 1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-0 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-3 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-1 1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 3<-1 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 3<-2 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 3<-2 1; ADD 3<-1 -1; ADD 1<-2 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 3<-2 1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 3<-1 -1; ADD 0<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-2 1; ADD 3<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 3<-2 1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 3<-1 -1; ADD 3<-2 1; ADD 1<-2 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 3<-1 -1; ADD 3<-2 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-1 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P1c 22 17 58 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 21 17 124 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 3<-2 1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 3<-2 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3 21 0 136 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 3<-2 -1; ADD 3<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c 18 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P1c 18 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c 18 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-0 1; ADD 3<-1 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 3<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 18 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-0 1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c 18 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P1c 18 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 3<-2 -1; ADD 3<-0 1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 18 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 2<-1 -1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P1c 18 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-1 -1; ADD 3<-0 1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-0 1; ADD 3<-1 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-3 -1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 14 0 130 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 3<-0 1; ADD 3<-2 -1; ADD 2<-0 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-2 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 3<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-1 1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-3 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 1<-2 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 2<-1 1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-1 1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-2 -1; ADD 0<-1 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 3<-1 -1; ADD 0<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-0 1; ADD 3<-1 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-0 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-0 -1; ADD 2<-3 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 0<-2 -1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-0 1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 3<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 2<-0 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-1 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-1 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 3<-2 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 1; ADD 3<-2 1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 3<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 3<-0 1; ADD 1<-2 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 0<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 3<-2 1; ADD 1<-2 -1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 2<-1 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 3<-2 -1; ADD 3<-1 1; ADD 2<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-1 1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-1 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 2<-1 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 3<-1 1 DECOMP P1c 15 0 66 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP P1c 15 0 60 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 3<-2 -1; ADD 3<-1 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 1 DECOMP P1c+P3 15 0 109 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 13 0 109 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP P1c+P3 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c+P3+P1c+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 2<-1 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P3+P1c+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 3<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3+P3+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P3+P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP P1c+P3 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3+P1c+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-1 -1 DECOMP P1c+P3+P3+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3+P1c+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3+P1c+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 0<-3 1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 DECOMP P1c+P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-2 1; ADD 1<-0 -1; ADD 0<-2 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 1<-2 -1; ADD 3<-1 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3+P3+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1; ADD 0<-2 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 2<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; ADD 0<-1 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1; ADD 1<-2 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-1 1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1; ADD 0<-2 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 1; ADD 0<-2 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3+P1c+P1c 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 0<-3 -1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP P1c+P3 11 17 55 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 3<-1 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1; ADD 2<-1 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-2 1; ADD 0<-1 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-1 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 3<-1 1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-1 1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-3 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 0<-3 1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 1; ADD 2<-1 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 3<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 2<-1 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 0<-2 1 DECOMP P3 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 1; ADD 2<-1 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1; ADD 2<-0 1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-2 1 DECOMP P1c 12 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-1 1 DECOMP P1c+P3 12 0 182 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 2<-1 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-2 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3+P3+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 2<-1 1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 3<-1 -1; ADD 2<-3 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-3 1; ADD 0<-2 -1; ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-3 1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3+P3+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-0 1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 0<-3 1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-0 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 3<-1 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 3<-1 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-0 1; ADD 0<-1 -1 DECOMP P1c+P3+P3+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 3<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 2<-1 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-3 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 3<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP P1c+P3+P1c+P1c 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P1c+P3 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 2<-3 1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 3<-2 1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-2 1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 0<-2 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-2 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-2 1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 2<-3 1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 0<-3 1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 0<-1 -1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-2 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-2 1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 3<-2 1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 3<-2 -1; ADD 2<-1 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 3<-0 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 2<-3 1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-2 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 3<-1 1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-1 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 0<-1 -1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 3<-2 1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 3<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P1c 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 2<-1 -1; ADD 3<-2 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 1<-3 1; ADD 0<-1 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 3<-2 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 3<-2 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 3<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 3<-2 1; ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-1 -1 DECOMP P1c+P3 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-3 1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-2 1; ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P3+P1c 10 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 2<-3 1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P1c+P3 8 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 3<-2 1; ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-2 1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3+P1c 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 3<-1 1 DECOMP P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P1c+P3 10 0 158 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3 10 0 106 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 3<-2 1; ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 9 0 177 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-2 1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-1 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-3 1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 2<-3 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-0 -1; ADD 2<-3 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-1 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-2 -1; ADD 3<-1 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 0<-2 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-3 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 0<-2 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 2<-3 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 3<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 3<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1; ADD 2<-3 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 1; ADD 2<-3 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 0<-2 1; ADD 3<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-1 -1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-2 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 1; ADD 2<-3 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 1<-2 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-3 1; ADD 0<-1 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 2<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P3+P1c 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 1<-2 1; ADD 3<-1 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-1 1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 1<-2 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 3<-1 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 1<-3 1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-3 1; ADD 0<-1 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 3<-1 1; ADD 1<-2 -1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P3+P3 8 0 176 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP P3 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 DECOMP P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c 9 0 88 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 9 0 139 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P1c+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-2 1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P3 8 0 128 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-2 1 DECOMP P3+P3 7 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 1 DECOMP P3+P3 7 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 3<-0 1 DECOMP P3+P3 7 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-2 1; ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P3+P3 7 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 2<-1 1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P3+P3 7 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP P3+P3 7 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-0 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 3<-2 -1; ADD 2<-1 1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P1c+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 1<-2 -1 DECOMP(full basis) P3+P1c+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 3<-2 -1; ADD 2<-1 1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-3 1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 3<-2 1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-0 1; ADD 0<-1 -1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-2 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 -1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 2<-1 1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-2 1 DECOMP(full basis) P3+P1c+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 1<-3 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P1c+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 2<-1 1; ADD 3<-2 1; ADD 2<-1 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-2 1; ADD 2<-1 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-3 1; ADD 0<-1 -1 DECOMP P3+P3 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 2<-3 1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 1<-2 1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 -1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-0 1; ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P1c 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-2 1; ADD 2<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 2<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P1c+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-2 -1; ADD 1<-2 1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-3 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1 DECOMP(full basis) P3+P3+P1c 6 0 178 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-3 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P3+P1c+P3 6 0 131 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-3 -1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 1<-2 1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(CLSFIX fwd) P1c+P3+P12 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P3+P3+P12 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 -1 DECOMP(full basis) P1c+P3+P12+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-1 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P12+P1c 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P3 6 0 180 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-2 1 DECOMP P3+P3+P1c 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 0<-2 1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 1<-3 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P1c+P1c 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1; ADD 1<-0 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1; ADD 1<-2 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-1 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-0 -1; ADD 0<-2 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-2 1; ADD 1<-0 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 2<-3 1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 1<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P1c 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 2<-3 1 DECOMP(full basis) P3+P3+P3 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 3<-2 1 DECOMP(full basis) P3+P3+P3 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-1 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-0 1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1; ADD 2<-1 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-0 1; ADD 2<-1 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-2 1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P3+P3+P12 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P12+P1c 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(CLSFIX fwd) P1c+P3+P12 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-2 1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1 DECOMP P1c+P3+P3+P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 1<-3 -1; ADD 2<-1 1; ADD 1<-3 1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P1c+P1c 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 1<-3 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P1c+P1c 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-2 1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 1<-2 -1; ADD 0<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-0 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 0<-2 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-2 1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(CLSFIX rev) P12+P1c 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 3<-2 1; ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(CLSFIX rev) P12+P1c 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-1 -1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P1c+P3+P3+P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1; ADD 1<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-1 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 1<-2 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-2 1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-1 -1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP(CLSFIX rev) P12+P1c 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 3<-2 1; ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 3<-1 -1 DECOMP(CLSFIX rev) P12+P1c 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 1<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(CLSFIX fwd) P3+P3+P3 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 1 DECOMP(CLSFIX fwd) P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-2 1; ADD 0<-2 -1 DECOMP P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-2 1; ADD 2<-0 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(CLSFIX rev) P12+P1c 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3 6 0 180 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-3 1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-1 -1; ADD 1<-0 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3+P3+P1c 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-2 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-2 1 DECOMP P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-1 1; ADD 1<-3 1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P1c+P1c 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-0 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-2 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 1<-0 -1; ADD 2<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P1c 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 2<-1 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-0 -1 DECOMP(CLSFIX fwd) P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-3 1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 2<-3 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 3<-2 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P3 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-0 -1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-2 1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 1<-2 -1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-0 1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-1 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-1 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP P3 6 0 114 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-0 1; ADD 3<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-0 -1; ADD 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 1<-2 1; ADD 1<-0 -1; ADD 2<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 1<-2 1; ADD 0<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 1<-2 1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(CLSFIX fwd) P3+P3+P3 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 0<-2 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-2 1 DECOMP P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 3<-2 1; ADD 2<-0 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(CLSFIX rev) P12+P1c 6 0 177 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P12+P1c 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 -1 DECOMP(full basis) P1c+P3+P12+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-2 -1; ADD 1<-0 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-0 1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 0<-3 -1 DECOMP(full basis) P1c+P3+P3 5 0 129 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 2<-1 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 0<-1 -1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 1 DECOMP(CLSFIX fwd) P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 1<-0 -1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 -1; ADD 1<-0 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 1 DECOMP P1c 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 1; ADD 1<-0 -1; ADD 0<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 1<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P1c 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 6 0 153 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 1<-2 1; ADD 2<-0 -1; ADD 1<-0 -1 DECOMP P1c 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-2 1 DECOMP P1c+P3 6 0 6 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 0<-2 1; ADD 1<-0 -1; ADD 0<-2 -1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 3<-1 1 DECOMP P3+P1c 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1; ADD 1<-0 1 DECOMP P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P3 6 0 18 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 1<-0 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-2 1; ADD 0<-2 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 3<-0 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 1 DECOMP P3 6 0 96 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-2 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 2<-3 -1; ADD 0<-2 -1 DECOMP P3+P3 6 0 160 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-2 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 1<-2 1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 3<-1 -1 DECOMP P3 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-1 1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P3+P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 3<-0 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 3<-0 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 1<-3 1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1; ADD 1<-3 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-1 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 0<-3 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1; ADD 2<-1 1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P3+P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P3+P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 3<-0 1; ADD 2<-0 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 1<-3 1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 0<-3 -1; ADD 1<-3 1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 0<-3 1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-2 1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 3<-0 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-0 1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 3<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-2 1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1; ADD 2<-3 1 DECOMP(full basis) P3+P3+P3 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 1; ADD 3<-0 1 DECOMP(full basis) P3+P3+P3 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-2 1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-2 1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 2<-1 1; ADD 1<-3 1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 2<-3 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 1<-2 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1; ADD 2<-1 1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-2 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 3<-2 -1; ADD 2<-0 1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-0 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 2<-1 1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 0<-2 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 3<-1 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-3 -1; ADD 2<-0 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP P3 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP P3+P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-0 1; ADD 2<-1 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-3 1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 3<-0 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-0 -1; ADD 0<-2 1; ADD 3<-2 -1 DECOMP P3 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-0 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-1 1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-2 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3+P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 0<-3 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-2 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 3<-0 1; ADD 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1; ADD 2<-1 1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 1<-3 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP P3+P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 2<-1 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1; ADD 2<-1 -1; ADD 2<-0 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-2 1; ADD 1<-3 1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 2<-3 1; ADD 1<-2 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 288 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 1<-3 1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 1<-2 1; ADD 0<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-2 -1; ADD 0<-2 1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-0 1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-2 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-2 1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 3<-2 -1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-2 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 0<-3 1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 DECOMP P3+P1c 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 0<-1 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 3<-2 -1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P3 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 DECOMP P3 5 0 137 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 1<-2 1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-2 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-2 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P3 5 0 185 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 0<-2 -1; ADD 3<-0 -1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 2<-0 1; ADD 3<-1 1 DECOMP(full basis) P3+P1c+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 0<-3 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 0<-3 1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3 5 0 123 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-3 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 3<-1 1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P3+P3+P1c 5 0 203 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 2<-3 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 0<-3 -1 DECOMP(full basis) P3+P1c+P1c 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-3 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP(full basis) P1c+P3+P12+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 0<-2 -1; ADD 0<-3 1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-2 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 3<-2 -1 DECOMP P1c+P3 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 3<-1 1; ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(CLSFIX fwd) P3+P1c+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 2<-1 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P1c+P3+P3+P1c 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-3 1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 1<-2 -1 DECOMP P1c+P3 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-3 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-3 1; ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP P1c+P3 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 1<-3 1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-3 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 1; ADD 0<-2 1; ADD 2<-0 -1 DECOMP P1c+P3 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(CLSFIX fwd) P3+P1c+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 1<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP(full basis) P3+P3+P1c+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 3<-1 1 DECOMP(full basis) P3+P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 1 DECOMP(full basis) P3+P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 2<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-3 -1 DECOMP P1c+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P1c+P3+P3+P1c 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-3 1 DECOMP(full basis) P1c+P3+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 3<-2 -1; ADD 0<-2 -1 DECOMP P1c+P3 4 0 57 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(CLSFIX fwd) P3+P1c+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 2<-3 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP(full basis) P1c+P3+P12+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 0<-3 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P1c+P1c 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 1<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 1; ADD 3<-2 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 2<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP(full basis) P3+P3+P1c+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 1 DECOMP(full basis) P3+P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 0<-3 1; ADD 0<-2 -1; ADD 1<-3 1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-3 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 1; ADD 1<-3 -1; ADD 2<-1 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-2 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 1 DECOMP P3+P3 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 2<-1 1 DECOMP P1c+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1; ADD 3<-1 1 DECOMP(CLSFIX fwd) P3+P1c+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-0 -1; ADD 2<-3 -1 DECOMP P1c+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 2<-3 -1; ADD 0<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 2<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-1 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-3 1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-2 1; ADD 1<-3 -1; ADD 3<-2 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-2 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-3 -1 ADD 2<-3 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 2<-1 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-2 -1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 2<-3 1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-1 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 0<-3 1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1; ADD 0<-2 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 0<-1 -1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-2 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 3<-2 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1; ADD 3<-2 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P1c+P3 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 2<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 2<-3 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 1<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 2<-1 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-2 1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 3<-1 1; ADD 0<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 1<-2 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-2 1; ADD 3<-0 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 0<-3 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-3 -1; ADD 1<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 1; ADD 3<-1 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 1<-2 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 0<-2 -1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1; ADD 3<-2 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-2 -1; ADD 3<-2 1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-2 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 2<-3 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P12+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 0<-3 -1 DECOMP(full basis) P3+P1c+P1c 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 0<-2 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 0<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-1 1; ADD 3<-2 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-2 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 3<-1 1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 0<-3 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-3 -1; ADD 3<-1 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 0<-3 -1 DECOMP P3+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 1<-3 1; ADD 0<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-2 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 0<-3 -1 ADD 2<-3 1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 DECOMP P3 4 0 162 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 2<-3 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 3<-0 1 DECOMP(CLSFIX fwd) P3+P1c+P1c 3 0 132 0.0119 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-3 -1; ADD 2<-0 -1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 2<-0 1; ADD 0<-3 -1 DECOMP(full basis) P3+P1c+P1c 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-3 -1; ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P12+P3 4 0 155 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-0 1; ADD 3<-1 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 -1; ADD 2<-1 1; ADD 2<-3 -1 DECOMP P1c+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 1<-3 1; ADD 0<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 1<-3 -1; ADD 0<-2 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 0<-2 -1; ADD 0<-3 1; ADD 1<-3 1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-3 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 3<-0 1; ADD 2<-1 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 3<-0 1; ADD 2<-1 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-0 1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 3<-2 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 3<-0 1; ADD 1<-2 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 3<-1 1; ADD 3<-2 -1; ADD 2<-0 -1; ADD 3<-2 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 0<-2 -1; ADD 1<-3 1; ADD 2<-1 -1; ADD 0<-2 1; ADD 1<-3 -1 DECOMP P3+P3 4 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-1 1 DECOMP P3+P1c 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1 ADD 1<-3 1; ADD 0<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-3 -1 DECOMP P1c+P3 4 0 141 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 2<-3 1; ADD 1<-2 -1; ADD 2<-3 -1; ADD 0<-3 -1; ADD 0<-1 -1 DECOMP P3+P3 4 0 178 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-0 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-3 1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-0 1; ADD 0<-3 1; ADD 2<-0 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-1 1 DECOMP(full basis) P3+P12+P1c+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 3<-1 -1; ADD 1<-3 1; ADD 0<-3 1; ADD 2<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P1c+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 3<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P12+P1c+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 3<-1 1; ADD 1<-2 1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-0 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 2<-1 -1; ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-1 1 DECOMP(CLSFIX rev) P12+P1c 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 3<-0 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-0 -1; ADD 1<-3 1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 1<-3 1; ADD 2<-1 -1; ADD 1<-3 -1 DECOMP(full basis) P1c+P3+P1c+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; ADD 0<-3 1; ADD 2<-0 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 0<-3 1; ADD 2<-0 -1; ADD 0<-2 1; ADD 0<-3 -1; ADD 2<-1 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 1<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P3+P12+P12 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-2 1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 3<-1 -1; ADD 1<-2 -1; ADD 3<-1 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P12+P1c+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 2<-1 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-1 -1 DECOMP(CLSFIX rev) P12+P1c 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 1<-2 -1; ADD 3<-1 1; ADD 1<-2 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1 DECOMP(full basis) P1c+P3+P3 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 2<-0 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P3+P12+P12 3 0 180 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-2 1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 2<-1 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1 ADD 2<-3 -1; ADD 3<-1 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(full basis) P1c+P3+P1c+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 2<-3 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P3+P12+P1c 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 3<-1 1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 3<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 3<-2 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 3<-2 1; ADD 3<-1 1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-3 -1 ADD 1<-0 -1; ADD 1<-3 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 1<-3 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1 ADD 1<-0 -1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 1<-0 1; ADD 3<-0 1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 3<-0 -1; ADD 0<-2 -1; ADD 3<-2 1 DECOMP P1c+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 2<-3 1 DECOMP(full basis) P3+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 2<-1 -1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-2 1; ADD 2<-1 -1 DECOMP(full basis) P1c+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 3<-1 -1; ADD 2<-3 1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-0 -1 ADD 1<-3 -1; ADD 1<-0 -1; ADD 2<-1 1; ADD 1<-3 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1; ADD 2<-0 1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P3+P12+P1c 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-3 -1 ADD 1<-0 -1; ADD 2<-0 -1; ADD 0<-3 -1; ADD 2<-1 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P3+P3+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(CLSFIX fwd) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1 ADD 3<-1 -1; ADD 3<-2 -1; ADD 0<-3 1; ADD 3<-1 1; ADD 3<-2 1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 3<-2 -1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-2 1; ADD 0<-2 1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 1<-3 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 1<-2 -1; ADD 3<-1 -1 DECOMP(CLSFIX fwd) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 1<-0 -1; ADD 3<-1 1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 3<-2 1; ADD 0<-1 -1; ADD 2<-0 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-2 1; ADD 1<-0 -1; ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-2 1; ADD 2<-0 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 3<-2 1; ADD 3<-0 -1; ADD 0<-2 -1 DECOMP P1c+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 2<-0 -1; ADD 3<-1 1; ADD 2<-3 1; ADD 0<-3 -1 DECOMP(full basis) P3+P3+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-2 -1 ADD 3<-2 -1; ADD 0<-3 1; ADD 2<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P1c+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 2<-1 1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 2<-3 1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 2<-3 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 0<-3 1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 1<-2 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 3<-1 -1 DECOMP(CLSFIX fwd) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 1<-3 -1 ADD 2<-0 -1; ADD 1<-0 -1; ADD 0<-3 -1; ADD 2<-0 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 2<-3 1; ADD 0<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 1<-3 -1; ADD 2<-1 -1; ADD 2<-3 -1 DECOMP(full basis) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(CLSFIX fwd) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1 ADD 0<-2 -1; ADD 3<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 3<-2 1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 0<-3 -1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 3<-1 -1 DECOMP(CLSFIX fwd) P3+P12 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 0<-2 -1; ADD 1<-2 1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 3<-2 1; ADD 2<-0 1; ADD 0<-2 -1 DECOMP(full basis) P3+P3+P1c+P1c 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 3<-0 -1 ADD 3<-0 -1; ADD 0<-3 1; ADD 2<-3 1; ADD 3<-1 1; ADD 0<-3 -1; ADD 2<-3 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 1<-2 1; ADD 3<-1 1; ADD 0<-2 -1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1; ADD 2<-0 1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-0 -1 ADD 1<-0 -1; ADD 1<-2 1; ADD 0<-2 -1; ADD 3<-1 1; ADD 1<-0 1; ADD 0<-1 -1 DECOMP(CLSFIX fwd) P3+P3 2 0 159 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-0 -1; ADD 3<-1 -1 ADD 2<-0 -1; ADD 3<-2 1; ADD 0<-2 1; ADD 2<-1 1; ADD 3<-2 -1; ADD 0<-2 -1 DECOMP(full basis) P1c+P3+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 0<-3 -1; ADD 1<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 1<-3 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 0<-3 1; ADD 1<-3 -1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-3 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 3<-0 -1; ADD 2<-0 1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-0 1; ADD 2<-3 -1; ADD 3<-0 -1; ADD 3<-1 -1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-3 -1 ADD 1<-3 -1; ADD 3<-1 1; ADD 3<-2 1; ADD 0<-3 -1; ADD 3<-1 -1; ADD 3<-2 -1 DECOMP(full basis) P1c+P3+P1c+P3 2 0 202 0.006 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-3 -1; ADD 2<-1 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 1<-3 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 3<-2 -1; ADD 1<-3 -1; ADD 0<-3 1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 1<-3 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 1<-3 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-1 1; ADD 3<-0 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 1<-2 1; ADD 1<-3 -1; ADD 0<-1 -1; ADD 0<-3 -1; ADD 3<-2 -1; ADD 1<-3 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 0<-3 -1; ADD 2<-3 -1; ADD 3<-1 -1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-3 1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-1 -1 ADD 2<-3 1; ADD 0<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1 ADD 3<-0 -1; ADD 3<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-3 -1; ADD 3<-0 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 0<-3 -1; ADD 1<-3 -1; ADD 3<-2 -1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-3 1 DECOMP(full basis) P3+P1c+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 0<-2 -1; ADD 3<-2 -1 ADD 1<-3 1; ADD 0<-1 -1; ADD 3<-2 -1; ADD 0<-3 1; ADD 1<-3 -1; ADD 1<-2 -1 DECOMP(full basis) P3+P3+P1c 2 0 252 0.0059 (not extracted) +4pub/0own/L<=6 ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-3 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 1<-3 -1; ADD 0<-2 -1; ADD 2<-3 -1; ADD 2<-1 -1 DECOMP(full basis) P3+P12 2 0 159 0.006 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-2 1; ADD 0<-3 -1; CLEAR 3 DECOMP P8+P8 0 47 14 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-1 1; ADD 0<-3 -1; CLEAR 3 DECOMP P8+P8 0 47 14 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP P8+P8 0 37 0 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P8+P1c 2 0 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8+P8 0 47 14 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8+P8 0 47 14 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P12+P8+P3 0 18 1 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P6+P1c+P1c+P8 0 27 1 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12+P3+P1c 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 2<-0 -1; ADD 1<-3 1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 -1; ADD 0<-2 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 1<-2 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3+P1c 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3+P1c 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-1 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12+P3+P1c 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 1<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(full basis) P1c+P1c+P8 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 1<-0 -1; INIT 3; COPY 3<-0 -1; ADD 3<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-0 1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 1<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP(full basis) P1c+P1c+P8 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 2<-0 1; ADD 0<-1 1; ADD 1<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 2<-1 -1; ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P1c+P8+P1c 2 0 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 1<-0 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P1c+P1c 0 9 16 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-0 1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 2<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P1c+P8 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-3 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P1c+P8 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-1 -1 ADD 2<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P1c+P1c 0 9 16 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P8+P1c 2 0 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 1<-3 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 1<-0 -1; ADD 0<-1 1; ADD 1<-0 1; ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(full basis) P3+P3+P8 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; ADD 0<-2 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 1; ADD 0<-2 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 1<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3+P1c 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 1<-2 -1; ADD 0<-2 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3+P1c 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; INIT 3; COPY 3<-2 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-2 -1; ADD 2<-1 1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(full basis) P3+P1c+P8 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-1 -1; CLEAR 3 DECOMP(full basis) P3+P8+P1c 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; INIT 3; COPY 3<-1 -1; ADD 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 2<-1 -1; CLEAR 3 DECOMP(full basis) P3+P1c+P8 1 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-0 1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 -1; CLEAR 3 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(full basis) P3+P8+P1c 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 -1; CLEAR 3 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 2<-0 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 1<-2 1; ADD 0<-2 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3+P1c 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-2 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P1c+P8+P1c 2 0 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-1 1; ADD 1<-2 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-1 -1; CLEAR 3 DECOMP(full basis) P3+P8+P1c 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(full basis) P3+P8+P1c 2 9 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-0 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8+P8 0 46 0 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12+P3+P1c 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP P8+P8 0 46 0 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 0<-1 1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12+P3+P1c 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-2 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-2 1; ADD 1<-3 -1; CLEAR 3 DECOMP P8+P8 0 37 0 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-0 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 ADD 1<-2 -1; ADD 2<-1 -1; ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P1c+P8+P1c 2 0 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 -1; ADD 0<-2 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; ADD 1<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P8+P1c 2 0 16 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-0 1; ADD 0<-2 -1; ADD 2<-1 -1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; CLEAR 3 DECOMP(full basis) P3+P3+P8 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3; INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3 DECOMP P8+P8 0 47 14 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-1 -1 INIT 3; COPY 3<-1 -1; ADD 2<-3 1; CLEAR 3; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP P8+P8 0 47 14 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 1 ADD 2<-0 1; ADD 0<-2 -1; ADD 2<-1 -1; ADD 2<-0 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 -1; CLEAR 3 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-2 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-1 -1; ADD 0<-2 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 1<-3 -1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 2<-0 -1; ADD 0<-2 1; INIT 3; COPY 3<-1 -1; ADD 2<-3 -1; ADD 0<-2 -1; ADD 1<-2 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P3+P1c 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-1 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12+P3+P1c 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 1 ADD 0<-1 -1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-2 -1; INIT 3; COPY 3<-1 -1; ADD 0<-3 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 1<-3 -1; ADD 0<-2 1; ADD 2<-0 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 1<-0 1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-0 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-1 1; ADD 2<-0 1; INIT 3; COPY 3<-2 -1; ADD 0<-3 1; CLEAR 3 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; ADD 1<-0 1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-0 1 INIT 3; COPY 3<-0 -1; ADD 1<-3 1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-0 1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX rev) P8+P12+P3+P1c 0 9 15 0.0 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 2<-0 -1; ADD 1<-2 -1 ADD 0<-2 -1; ADD 0<-1 -1; INIT 3; COPY 3<-0 -1; ADD 0<-2 1; ADD 2<-0 -1; ADD 1<-3 -1; CLEAR 3 DECOMP(full basis) P1c+P3+P8 1 9 1 0.0059 (not extracted) +3pub/1own/L=8 (new vs L<=7) ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-0 -1 ADD 1<-0 -1; ADD 0<-1 1; ADD 1<-2 1; ADD 1<-0 1; INIT 3; COPY 3<-1 -1; ADD 0<-3 1; CLEAR 3 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) 0 9 15 0.0 (not extracted) diff --git a/research/p104-designer-toolkit-v2/PRIMMINE-SCALE-RULES.tsv b/research/p104-designer-toolkit-v2/PRIMMINE-SCALE-RULES.tsv new file mode 100644 index 0000000000..2defc0d34a --- /dev/null +++ b/research/p104-designer-toolkit-v2/PRIMMINE-SCALE-RULES.tsv @@ -0,0 +1,52 @@ +table LHS(A) RHS(B) class +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; ADD 1<-2 -1 INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; ADD 1<-2 -1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 -1; SCALE 1 -1; ADD 0<-1 1; SCALE 1 -1 DECOMP(CLSFIX rev) P1c+P9 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; SCALE 0 -1; ADD 0<-1 1; ADD 0<-2 1; SCALE 0 -1 DECOMP(CLSFIX rev) P9+P1c+P9 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 ADD 0<-1 -1; SCALE 2 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 0<-2 1; SCALE 2 -1 DECOMP(CLSFIX rev) P9+P9+P9+P1c +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; ADD 2<-1 -1 INIT 3; COPY 3<-2 -1; ADD 2<-1 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; SCALE 0 -1 SCALE 0 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P8+P9 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; SCALE 1 -1 SCALE 1 -1; INIT 3; COPY 3<-1 -1; ADD 3<-2 1; ADD 0<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P9+P8 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; SCALE 1 -1 SCALE 1 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P9+P8 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; SCALE 2 -1 SCALE 2 -1; INIT 3; COPY 3<-1 -1; ADD 3<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P9+P8 +3pub/SCALE ADD 0<-1 -1; ADD 0<-2 -1; SCALE 2 -1 SCALE 2 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 1; ADD 0<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P9+P8 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1 INIT 3; COPY 3<-2 -1; ADD 1<-3 1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8+P6 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-1 -1; ADD 0<-2 1; SCALE 1 -1; ADD 0<-1 1; ADD 1<-2 1; SCALE 1 -1 DECOMP(CLSFIX rev) P9+P9+P9+P3 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 1<-2 -1; ADD 0<-1 -1; SCALE 1 -1; ADD 0<-1 1; SCALE 1 -1 DECOMP(CLSFIX rev) P1c+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 0<-2 1; ADD 0<-1 -1; SCALE 1 -1; ADD 0<-1 1; ADD 1<-2 1; SCALE 1 -1 DECOMP(CLSFIX rev) P9+P9+P9+P3 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 1<-2 -1; ADD 0<-1 -1; ADD 0<-2 -1; SCALE 1 -1; ADD 0<-1 1; SCALE 1 -1 DECOMP(CLSFIX rev) P1c+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 1<-2 -1; ADD 0<-2 -1; ADD 0<-1 -1; SCALE 1 -1; ADD 0<-1 1; SCALE 1 -1 DECOMP(CLSFIX rev) P1c+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 1<-2 -1; ADD 2<-1 1; ADD 1<-2 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1; ADD 2<-1 1; ADD 1<-2 -1; ADD 2<-1 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 1<-2 -1; ADD 2<-1 1; ADD 0<-1 -1; ADD 1<-2 -1; ADD 2<-1 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-1 -1 INIT 3; COPY 3<-1 -1; ADD 1<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX rev) P8 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 0<-2 -1; SCALE 1 -1; ADD 1<-2 1; ADD 0<-2 -1; ADD 0<-1 1; SCALE 1 -1 DECOMP(CLSFIX rev) P1c+P9+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 ADD 1<-2 -1; ADD 0<-2 -1; SCALE 1 -1; ADD 0<-1 1; ADD 0<-2 -1; SCALE 1 -1 DECOMP(CLSFIX rev) P9+P1c+P9 +3pub/SCALE ADD 0<-1 -1; ADD 1<-2 -1; ADD 0<-2 -1 INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 1<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-0 -1; ADD 0<-1 -1; ADD 3<-1 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 0<-1 -1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1 INIT 3; COPY 3<-1 -1; ADD 3<-0 1; ADD 2<-3 -1; ADD 0<-1 -1; CLEAR 3 DECOMP(CLSFIX fwd) P1c+P8 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-1 -1; ADD 2<-1 -1; SCALE 0 -1; ADD 0<-1 1; ADD 2<-0 1; SCALE 0 -1 DECOMP(CLSFIX rev) P9+P9+P9+P3 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-0 -1; ADD 0<-2 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 0<-2 -1; ADD 2<-0 -1; ADD 0<-2 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 UNRESOLVED-CAP (CLSFIX: all linearisations, fwd+rev, cap 2500, depth 6) +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-1 -1; ADD 2<-1 1; SCALE 0 -1; ADD 0<-1 1; SCALE 0 -1 DECOMP(CLSFIX rev) P1c+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 0<-2 1; ADD 2<-0 1; ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-2 -1 DECOMP(CLSFIX fwd) P1c+P3+P3 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-0 -1; ADD 2<-1 1; ADD 0<-1 -1; SCALE 0 -1; ADD 0<-1 1; SCALE 0 -1 DECOMP(CLSFIX rev) P1c+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-1 -1; ADD 0<-1 -1; SCALE 0 -1; ADD 0<-1 1; ADD 2<-0 1; SCALE 0 -1 DECOMP(CLSFIX rev) P9+P9+P9+P3 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 0<-1 -1 ADD 2<-1 1; ADD 2<-0 -1; ADD 0<-1 -1; SCALE 0 -1; ADD 0<-1 1; SCALE 0 -1 DECOMP(CLSFIX rev) P1c+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 0<-2 1; ADD 2<-1 1; ADD 0<-2 -1; ADD 2<-0 -1 DECOMP(CLSFIX fwd) P3 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-0 -1; ADD 2<-1 1; SCALE 0 -1; ADD 0<-1 1; ADD 2<-1 1; SCALE 0 -1 DECOMP(CLSFIX rev) P9+P1c+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 ADD 2<-1 1; SCALE 0 -1; ADD 2<-0 1; ADD 2<-1 1; ADD 0<-1 1; SCALE 0 -1 DECOMP(CLSFIX rev) P1c+P9+P9+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-0 -1; ADD 2<-1 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 3<-0 1; ADD 2<-3 -1; CLEAR 3 DECOMP(CLSFIX rev) P6+P8 +3pub/SCALE ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; ADD 0<-2 1; ADD 2<-1 -1; SCALE 0 -1; ADD 0<-1 1; SCALE 0 -1 DECOMP(CLSFIX rev) P1c+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; ADD 0<-2 1; SCALE 1 -1; ADD 0<-1 1; ADD 2<-1 1; SCALE 1 -1 DECOMP(CLSFIX rev) P9+P1c+P9 +3pub/SCALE ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 ADD 0<-1 -1; SCALE 2 -1; ADD 0<-2 -1; ADD 0<-1 -1; ADD 2<-1 1; SCALE 2 -1 DECOMP(CLSFIX rev) P9+P9+P9+P1c +3pub/SCALE ADD 0<-1 -1; ADD 2<-1 -1; ADD 0<-2 1 INIT 3; COPY 3<-1 -1; ADD 2<-3 1; ADD 3<-2 1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8+P6 +3pub/SCALE ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 ADD 0<-2 -1; ADD 2<-1 -1; ADD 0<-2 1; ADD 2<-0 1 DECOMP(CLSFIX fwd) P3 +3pub/SCALE ADD 0<-1 -1; ADD 2<-1 -1; ADD 2<-0 1 INIT 3; COPY 3<-1 -1; ADD 0<-3 1; ADD 3<-0 1; ADD 2<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8+P6 +3pub/SCALE ADD 0<-1 -1; SCALE 0 -1; ADD 0<-2 -1 SCALE 0 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P9+P8 +3pub/SCALE ADD 0<-1 -1; SCALE 2 -1; ADD 0<-2 -1 SCALE 2 -1; INIT 3; COPY 3<-1 -1; ADD 3<-2 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE ADD 0<-1 -1; SCALE 2 -1; ADD 0<-2 -1 SCALE 2 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE SCALE 0 -1; ADD 0<-1 -1; ADD 0<-2 -1 SCALE 0 -1; INIT 3; COPY 3<-2 -1; ADD 3<-1 -1; ADD 0<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE SCALE 0 -1; ADD 1<-0 -1; ADD 1<-2 -1 SCALE 0 -1; INIT 3; COPY 3<-0 -1; ADD 3<-2 -1; ADD 1<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 +3pub/SCALE SCALE 0 -1; ADD 1<-0 -1; ADD 1<-2 -1 SCALE 0 -1; INIT 3; COPY 3<-2 -1; ADD 3<-0 -1; ADD 1<-3 1; CLEAR 3 DECOMP(CLSFIX fwd) P8 diff --git a/research/p104-designer-toolkit-v2/README.md b/research/p104-designer-toolkit-v2/README.md new file mode 100644 index 0000000000..0c1b92cd4a --- /dev/null +++ b/research/p104-designer-toolkit-v2/README.md @@ -0,0 +1,145 @@ +# tk: the P104 designer toolkit (exact pricing, legality, rebuild, generators, floors) + +This package claims **no kappa and no new word**. It is the tooling used to design, price, audit and rebuild P104-family words, packaged as one command, `tk`. +Every number it reports is exact arithmetic or a legality replay; CP-SAT (`ortools`) and a C compiler are optional accelerators. It supersedes the +smaller `research/p104-designer-toolkit` (kept frozen) and builds on the swarm's published words and verifiers (credits at the end). + +## What is in it +| area | commands / modules | what it does | +|---|---|---| +| exact pricing and legality | `tk price`, `tk check`, `tk accept`, `tk adopt`, `infra/legal.py`, `infra/price_exact.py` | exact invoice and Decimal-50 crossing of a word, every legality violation localised to rule/event/register, the PR's own `price.run` for acceptance, and `tk adopt` which derives a verifier profile (`profiles/*.json`) from a PR head | +| rebuild pipeline | `tk rebuild`, `alignbuild/` | re-derives the skeleton, Y routing, hubs, markets and signal events of #6030 from pinned rule builders (never-lose, each step accepted only at exact kappa); `--post fold,hoist,retain` then applies the constructor passes that give #6144 (fold, hoist) and #6167 (retained-operand stop drop) automatically | +| generators | `tk gen2`, `tk gen3`, `tk synth`, `tk gensearch`, `tk genpipe`, `gen2/`, `synth/`, `genpipe2/3.py` | from-scratch word generation (gen2: markets, Y-route, late stages; gen3: gen2 plus Y-route/primgen/signal stages), spec-space search, never-lose stage pipelines | +| sub-circuit re-solve | `subcirc/`, `surgery/`, `tk anatomy`, `tk bulk`, `tk shipcheck` | per-column I/O specs of #6030 markets, extract/splice of octet columns with bit-exact round trip, anatomy ledgers, whole-corpus tables, shippability check | +| move classes and screens | `tk retime/evretime/reorder/reframe/handoff/split/split2/ibase/a2x/blockmove/relay/pscreen/eval/search/plateau`, `movekit.py`, `prims*.py`, `macros.py`, `ctxmine*.py`, `k2/` | exact neighbourhood screens (CP-SAT retimes, hand-offs, helper splits, primitive basis, macros, mined windows, a C++ SA kernel) | +| floor LPs | `infra/floors_true.py`, `infra/model3.py`, `infra/linwt.py`, `infra/rigidity.py`, `P104-THEORY.md`, `P104-LEMMAS.md` | the LP floors and lemma write-ups (what is proved, refuted and conditional) | + +`MAP.md` is the full command reference and module map; `tk -h` documents each flag. + +## Quickstart +Python >= 3.12 with `numpy`, `scipy` and `sympy` (required; `mpmath` comes with sympy); `networkx` (the gen2/gen3 generators); `ortools` (CP-SAT commands); a C/C++ compiler (the native replay kernel `native/nativecore.c` and the k2 engine are built on first use). The CI pins are numpy 2.2.6, scipy 1.14.1, sympy 1.13.3. +```sh +python3 -m pip install numpy scipy sympy networkx ortools # networkx: gen2/gen3; ortools: retime/evretime/reorder/frames +cd research/p104-designer-toolkit-v2 +python3 -B tk.py --help +python3 -B tk.py price 6030 # exact kappa .003125811557911897 and side constraints +python3 -B tk.py check 6167 # localised legality verdict +python3 -B tk.py diff 6030 6144 # what changed between two words +``` +Words are given as a path to `WORD.json[.gz]` or an alias of a word in `words/` (the #6030 lineage and the older lineage words the tests use). + +### Reproduce #6030 -> #6144 -> #6167 +```sh +python3 -B tk.py rebuild 6030 --sides skeleton,routing,hubs,markets,signal --post fold,hoist,retain --workdir /path/to/work +``` +Measured from a clean clone (Apple M3 Pro, one core): the five-side rebuild of #6030 takes about 2 minutes (66 of 67 steps accepted at exact kappa .003125811557911897, the one gap is logged and skipped), `fold` takes about 9 minutes for the three sites it accepts (about 1 to 4 minutes per solve), and `hoist` and `retain` take under a second each. +The chain then ends at kappa **.003128652015904059**, the exact kappa of #6167. The second accepted fold site reaches .003127144482523 (the kappa of #6143), and after `fold,hoist` the kappa is .003128393203271 (the kappa of #6144); `retain` applied to the shipped #6144 word reproduces #6167's program bit for bit (`tests/retain_test.py`). The rebuilt words are not program-identical to the swarm's hand-built words (event layouts differ: 23346 vs 22821 events for #6167); what is reproduced exactly is the legal word's kappa, the pass sequence and the single-site edits. +`--sides skeleton,hubs` is the one-minute smoke (37 steps). Judging intermediate words: the step outputs are judged under the input word's verifier profile (fold/hoist) and under the newest profile of the family (retain, which adds a lifetime), see `alignbuild/api.py` and `rebuild.py`. +Heavy commands run synchronously by default; set `TK_HQ=/path/to/wrapper` (called as `WRAPPER NAME TIMELIMIT argv...`) to route them through a job queue. + +### Tests +```sh +python3 -B tests/regress.py --fast # about 2 minutes: prices, legality + localised mutants, native replay, screens, shipcheck, rebuild smoke +python3 -B tests/regress.py --quick # the stdlib-fast suite incl. generators, surgery, bulk, rebuild mini chain +python3 -B tests/regress.py --solver # CP-SAT checks (needs ortools): retime 5551 == #5561 and evretime +python3 -B tests/regress.py --real 5551,5553,5561 # the unmodified PR5545 verifier stack (about 200 s per word) +``` +`tests/*_test.py` are the per-module tests that `regress.py` drives; each is also runnable alone. + +## Environment and layout +- `TK_WORK` (default: the package directory) holds scratch state: `.cache/`, `out/`, `jobs/`, `ext/`. All are git-ignored. `TK_PYTHON` selects the interpreter used by the `tk` shell wrapper. Nothing sets environment variables at import time. +- `ext/` is where optional inputs and outputs of research drivers live (for example `tk adopt` working copies, search stores, generator run directories). The drivers that need inputs that are not shipped say so and exit. +- `words/` holds the reference words; `profiles/` the verifier profiles (descriptor JSON plus the PR's own `base_local.py` / `pricing.py`, byte-pinned by hash); `inputs/` the byte-pinned PR5545 verifier capsule used unmodified by `--real`. + +## Scope and limitations +- Tooling only: no kappa claim, no new word, no proof of a theorem beyond what `P104-LEMMAS.md` states (it separates proved, refuted and conditional items). +- Models are not oracles: retime/evretime/reorder objectives are linearised kappa and the reported kappa is always the exact re-price. Free helper start/final frames are a verifier freedom, not a maintainer-approved contract. +- `rebuild` and the surgery/anatomy tools carry #6030's register/frame numbering in `alignbuild/data/`; other words must share that numbering (the octet class around #6030) or bring their own manifest. Steps that do not solve are logged GAP and skipped. +- Not runnable from a fresh clone (inputs not shipped): `tk gen` (S4GEN window-B trees), `planbuild/plan.py` and `build.py` (plan-search model trees; source only), `hops --recomb`, the BIT-side drivers that need adopted BIT packages, and the k2 engine tests that need unshipped nets (`k2unify_test`, `k2levers_test`, printed as SKIP). `tk adopt` needs network access. `leverbank_test` and `genpipe2_test` need `networkx` (printed as SKIP without it). +- The rebuilt words are legal at the target kappa but not program-identical to the swarm's hand-built words; `retain` on the shipped #6144 word is bit-identical to #6167. +- CI replays `VERIFY.json` (`tests/regress.py --fast`, which includes the rebuild smoke, and `tests/retain_test.py`); the CP-SAT legs need `ortools`, which generic CI lacks, so there the retime is verified from its shipped output. + +## Open next questions +1. Can the unshipped model inputs of `planbuild/` (plan-search population, class-break picks) be packaged so `plan.py`/`build.py` run from a fresh clone? Blocked on vendoring the model trees; first step: list the modules the two files import and vendor the minimal closure. +2. Can `fold` (about 3 minutes per accepted site) be made fast enough for generic CI to replay #6030 -> #6144 end to end? First step: profile `alignbuild/iob2.py` on one site and cache the rule matrices. +3. Are free helper start/final frames and the owned-inventory pins part of the caller contract? The toolkit reports gains under the adopted profile's literals, which are conventions, not specification; maintainer review is the blocker. First step: `tk retime 5551 --free starts` and compare with `tk diff`. + +## Credits +The tooling reproduces and extends words and verifiers published by the swarm: the #6030 lineage (#6030, #6143/#6144), #5907, #5827, #6167 (aliromman), #6163 (petalas), #6166 (Matarener), and the earlier P104 line #5545, #5551, #5553, #5561, #5599, #5612, #5660. `profiles/*/` and `inputs/` carry those PRs' own verifier sources unmodified. + +Prepared by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. Apache-2.0 (repository license). + +--- + +# Command notes + +## `tk price WORD [--real] [--wait] [--json] [--no-cache]` +Exact kappa. Fast path (0.4 s, cached in `.cache/` by file sha): `legal.check` -> exact invoice (T,P: 18 calls x helper credits / paid MOVE ranks + the word-independent outer part) +-> Decimal-50 root of `sum (T_r-P_r) r^(1-k)`, the 1e-14 crossing interval, the three tail side constraints (alpha, gamma, delta) and the event/scalar budgets. +For the published aliases it also prints `expected ...: MATCH|MISMATCH` (claims >=14 decimals must be an end of the crossing interval, shorter claims the truncated root). +`--real` runs `real.py` = the unmodified `local.replay`, `reverse_columns`, `native`, the physical caller and PR5551's `pricing.py` with only the census/claim literals patched +(like `infra/realcheck.py`, plus the literal-only `local.py` patch #5553 shipped for words with N != 735 public registers), ~4 min, result cached (`interval`, `crossing_lo/hi`, 54+4 outer checks, per-stage seconds, or the failing stage and its `need` message). +Reference: #5551 .0030415311671457, #5553 .0030428242623657, #5561 .0030814243338015 (real interval [.0030814243338,.00308142433381]). + +## `tk check WORD [--native] [--exact] [--wait] [--max N] [--json]` +Legality oracle with localisation; exit code 0 = legal. Fast path ~0.1 s: ALL violations (not just the first) of the real `local.py` rules +(MOVE source/ownership, nested chronological transport, dyadic/common-chart ADD/COPY/SCALE, owned INIT/CLEAR, peak owned = 1, final frames, endpoint rows by random evaluation mod 2^61-1, productive-input and literal-port rules). +Each violation prints the real rule string, the event index and, for event rules, the register **role** (X source / Y target / helper / owned scratch), its current frame, the event that last set that frame, +the source register of an ADD/COPY and its frame, and for nesting errors the offending vectors. End-of-program rules (final frames, endpoint rows, helper nesting, literal ports) list the registers and their last events. +Limit: a wrong *value* (e.g. a corrupted ADD source that still obeys the frame law) is only detected at the endpoint row it corrupts; the event is not identified. +`--native` runs every distinct MOVE frame pair and every helper boundary through the vendored native Gaussian-recipe check (rank == dim gap) in-process (minutes; run it inside an hq job: `$TK_HQ NAME TL python3 -B toolkit/tk.py check W --native`). +`--exact` queues `real.py --upto native` (stages replay / reverse_columns / native; the first rejecting real `need` message is reported). + +## `tk retime WORD --free LIST [--pin mainstops] [--tl S] [--out F] [--wait]` +Exact-lattice retime of a fixed circuit (event order, operands and per-register MOVE counts fixed): CP-SAT over a subspace of F2^9 for each ADD-equal-frame cluster inside [sum of pinned frames below, intersection of pinned frames above], +strict nesting on register chains, helper credit rank >= 1, objective = linearised kappa; the realised word is re-checked with `legal.check` and re-priced exactly. `--free` names what may change (everything else is pinned to the input word's span): +`starts` helper initial frames, `finals` helper final frames, `stops` equal-frame stops may collapse (MOVE deleted; implied by starts/finals), `mainstops` main-register intermediate frames (free by default, accepted for clarity), `mainends` X-final / Y-initial. +The literal ports (X initial, Y final) are never free. `--pin mainstops` keeps main intermediate frames as in the input. +`tk retime 5551 --free starts,finals` -> OPTIMAL in ~5 s, kappa .0030814243338015 = #5561 (170 MOVEs deleted). `--pin mainstops` -> .0030672308 (-1.4e-5): the 149 main-stop relabels forced by shared ADD charts carry that gain. +Output word: `out/__.json.gz`; log in `jobs/NAME.log` (`RESULT {...}` line with status, ceiling, kappa, gain, moves deleted). + +## `tk diff A B [--json]` +Events aligned by (op, register, coefficient) ignoring frame labels (difflib); reports sizes, kappa both ways, paid-call and credited-helper-rank histogram changes, fields/calls/surplus, events added/removed by op and register role, +MOVE stops deleted/added per role, whether the scalar program is identical, aligned events whose frame *span* changed, endpoint changes per role and helper start/final dimension histograms, budget slack. +`tk diff 5551 5561`: scalar program identical, 170 MOVEs removed (93 helper, 4 X, 73 Y), 168 helper starts + 23 finals changed, 149 main MOVEs relabelled -- the AUDIT-5561 numbers. + +## `tk hops MATRIX [--signed] [--program FILE] [--points vu.pkl] [--json] [--recomb]` +Delivery-program verifier/counter (HOPILP / SIGNHOP). MATRIX (npy/json/text; rows outputs, columns leaves; zeros = support, signs for `--signed`, e.g. `SIGNHOP/Smodel.npy`). +Program lines `hi lo a` (unsigned) or `hi lo keyhex a` (signed) as written by `sa*.cpp` / `rc1.txt` / `srecomb.py`; defaults `HOPILP/rc1.txt` and `SIGNHOP/S.out`. +Checks cancellation-freeness (each node = disjoint union of two children given by an affine functional; children leaves or program nodes with the induced normalised sign pattern; every row present), then prints +HOPS (non-leaf nodes), ROLES (= hops - outputs; cap 400), RESTORES (= 4 x hops, SIGNHOP model constant) and dead nodes. Reference: unsigned 916 (590 lower bound), signed 2797 in file (best fixed DAG 2704, pool bound 2521). +`--recomb` queues the CP-SAT recombination (`SIGNHOP/srecomb.py`, 1 h, 4 threads) for `Smodel.npy` only. + +## `tk evretime WORD [--k K] [--maxm M] [--tl S] [--out F] [--wait]` +Event-level exact retime with FREE ADD PLACEMENT (MODELERR2 `ev_lat.py`, now `evlat.py`): every ADD/COPY event has its own frame variable (candidates = native frames of nodes within +-K on its partners' timelines plus the L/U anchor bounds; +with `--maxm M` all subspaces between L and U when dim(U/L) <= M), MOVEs are re-inserted wherever consecutive frames differ; the realised word is re-checked with `legal.check` and re-priced exactly. +`tk evretime 5561 --k 2 --maxm 0` -> OPTIMAL (about 10 s), exact kappa .003081500768 (+7.6e-8); `--maxm 3` FEASIBLE .003081518091 (+9.4e-8): stop placement is free but worth little on this word. + +## `tk sens WORD [--calls N]` +Marginals of the exact invoice (P104CLEAN `sens.py` on any word): kappa change per call for one paid rank removed, paid merges, credit hand-off splits `a+b`, ... `tk sens 5545`: one rank-1 paid per call = +7.25e-5, a 4+5 hand-off = +1.356e-6, nine ones = +4.35e-6. + +## `tk pricer [--synth]` +Rank-r owned-pivot pricing (PRICE8 `pricer/price_r.py`, `verify_r.py`): PR5392's `price.py` / `verify.py` with the pivot rank r_q as a parameter. Plain run = `verify_r.py` with all r_q = 9, which reproduces PR5392's published RESULT byte for byte (about 25 s); +`--synth` = `synth.py`, one or two relations owned at rank 8: crossing .00309953590148 (+7.2248e-5) and .00317177354692 (+1.4449e-4), a ceiling on the crossing, not a word. Reads the unmodified `research/native-transpose-owned` (package mode: sibling directory; `TK_NTO` overrides). + +## `tk gen [full0] [--realise]` +Workspace-only (needs the S4GEN tree and the #4610 window-B inputs; `TK_WORKSPACE`). Rebuilds the hub partition of window B from chains alone (no layout input): 921 hubs (native 929), chain cost equal to native 4010.092015, forward/backward support misses 0/0 (about 1 s). `--realise` also runs realise6 through hq (about 220 s, published REALISE OK). + + +## Gotchas +- `infra/legal.py` was touched once: 'Endpoint rows' / 'Final frames' details now list the register ids (strings only, API unchanged). +- Models, not oracles: `retime`'s objective is the linearised kappa; the *reported* kappa is always the exact re-price. Illegal or frame-unsound words get a WARNING from `price`. +- Conditionality: free helper starts/finals are a verifier freedom, not a maintainer-approved contract (AUDIT-RETIME / AUDIT-5561). + +## `tk decompile WORD [--out F] [--no-forms]` / `tk realise DAG [--schedule exact|lazy|FILE] [--drop-helper H,..] [--out F]` +Value-level round trip (TKSYNTH and dag.py): word -> DAG (MOVE-free ops, linear form per value, required outputs, MOVE-hop schedule) -> word. `tk realise` reports value-level errors (undelivered rows, first diverging op per register), then runs the localised `check` and the exact kappa. +`tk decompile 5561 && tk realise 5561` -> LEGAL, kappa .003081424333801543 (identical invoice). `--drop-helper 706` -> 7 undelivered Y rows + Endpoint rows violation. + +## `tk reorder WORD [--k K] [--maxm M] [--tl S] [--window LO HI] [--out F] [--inline|--wait]` +Event-ORDER + frame retime (`relat.py`, evlat generalised; COMMREAD lane). Events that commute change places: reads of one register commute, additive writes into one register commute (`ADD(t,s)` = R on s, W on t); SCALE/INIT/CLEAR/COPY and every event touching an owned register are fixed barriers. Per register: I, epochs, F; all frames an epoch-bearing register visits form a chain, dims are monotone across epochs, cost = chain cost through the SET of dims visited (exact y/pay encoding -- the loose version never found anything). Helper starts/finals free, MOVEs re-derived, cyclic global orders cut lazily, result re-checked with `legal.check` and exactly priced; always run `tk check --native` on a gain. +`--window LO HI` pins everything outside the touched events (seconds). Works on N=750 words (#5599). Core: `python -B relat.py WORD OUT.json.gz TL K MAXM [LO HI]` (env HEAVY_THREADS, REORDER_ITERS, REORDER_CAP; diagnostics NOSOLVE=1 identity round trip, FORCE=other.word forces that word's frames). Tests: `tests/regress.py --reorder` (4 checks, also part of `--solver`). +Rediscoveries: `tk reorder 5580 --window 13520 13640` -> OPTIMAL in 3 s, = #5565 Stage A (.003084155550804, identical invoice to `5565A`); `tk reorder 5551 --window 13900 14700` -> .003044088 (+2.56e-6, native-clean) beyond #5565-old's +4.2e-7. Aliases added: 5565 (new cascade word), 5565A, 5565old, 5599. + +## `tk split WORD [--apply] [--max N] [--out F] [--public-cap 750|0] [--event-cap 26000] [--free-decay] [--list K]` +#5599's independent helper splits as a move class (SPLITGEN). Screen = vendored package `search.py` (splitvendor/): a non-main helper group with common (initial U, final V), a strictly nested stop F, a pure row a / column b pair at a MOVE cut (aP=c, Sb=d on the group, ab=cd=1, dyadic basis). Each hit is built (`construct.split`), replayed (package `local.replay`), `legal.check`ed and priced exactly with the p5599 profile (decay 39/40); `--apply` greedily applies the best (dkappa, fewest events) and rescans (~40 s/scan, so run in chunks or via cpuq). Gain depends on the rank pair only: [5,4] +1.40e-6, [2,7] +1.08e-6, [8,1] +0.72e-6 (on #5565 level). `tk split 5565 --apply` reproduces #5599 (13 splits, .0031004563072); `tk split 5599n` = 0 hits. Alias `5599n` = current #5599 head 09dd0965 (748 regs). Tests: `tests/regress.py --split` (80 s), `--split-full` (~10 min). Notes: ext/SPLITGEN/NOTES.md. + diff --git a/research/p104-designer-toolkit-v2/SOURCES.json b/research/p104-designer-toolkit-v2/SOURCES.json new file mode 100644 index 0000000000..1e2668e49b --- /dev/null +++ b/research/p104-designer-toolkit-v2/SOURCES.json @@ -0,0 +1,755 @@ +{ + "schema_version": 1, + "base_commit": "3f0152a32eeebac0df11946dbd50cabe5a7f7839", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + } + ], + "retained_source": { + "path": "research/p104-designer-toolkit-v2/inputs/pr5545-source-closure.tar.gz", + "sha256": "59768da554e11b11fae52d07f520f50684cc7a9ee0bec2873edbcd6b63814837", + "export_manifest_sha256": "0a20358f9c089be1f5606c78077314e30a72998fb3c5123848d921a8d1814e76", + "commit": "18968423711fd902aaee1099979497d55603e1dc", + "files": 33, + "source_url": "https://github.com/CrocSwap/integer-mult-bounds/pull/5545", + "note": "Byte-identical copy of the capsule retained by PR5551; used UNMODIFIED by tk price --real and tk check --native." + }, + "retained_words": [ + { + "path": "research/p104-designer-toolkit-v2/words/5545.json.gz", + "sha256": "a1e416add9d2bb44fce923111ebc50513e5d845e56aabe214f2f0bc7d5f2b45d" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5551.json.gz", + "sha256": "48f8734ca9c5adf5d60ded3a5fefbc24894d2c358ed7cb30fcc0d71718599446" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5553.json.gz", + "sha256": "568c1e82b9066bb65df0a603addff94f3fa95b13a6a00d6fe8fe6afbf5d998da" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5553A.json.gz", + "sha256": "45b6c50b4591b3a6cf459ce0ac37b61b7e6d44e6079ad892586735c9cbd9462f" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5561.json.gz", + "sha256": "b3701d78bee3661382ebe5414e678dfc9ee292e254cb9dc56339c2d2f45fdf44" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5561s.json.gz", + "sha256": "c9d978ba90a3ddf6d50529a010ddb5dadc56554c99a15c36378b999deb6d6a20" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5565.json.gz", + "sha256": "3d62828f53e654e3db218bf4611a47aed4a677d48043713dc004db0f8a32990d" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5565A.json.gz", + "sha256": "01259466ac2fc8fd59c628b18a731318e560e863df07f29587cdefce1b30e8fe" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5565old.json.gz", + "sha256": "e229669f52e7586ab6a4df3bad38b89ce8dd12f4e1f637ed70b5c0b4d1765747" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5569.json.gz", + "sha256": "bef82ae73061ce71a02ff89b43e1faaf4b7fb6e6b0b69aa14b11ff80a76aaed5" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5580.json.gz", + "sha256": "b2a98c4bd0dbe86c09e9d15ee060dcf1aab09dbef90aa1e2127676f4039f406b" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5599.json.gz", + "sha256": "4924640fa7fcbb3895a43bf5f07e7274260feac06ecc95285f77dd8eaee30fa1" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5599n.json.gz", + "sha256": "bbb072bced5824a8d9094c49be2fc51fbfdd05fb2b7dab8106e1275053075099" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5612.json.gz", + "sha256": "9e4594e2c03a082f59bfadae7cf21695e226f0a1be7759e17151723f56cb119c" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5613.json.gz", + "sha256": "192a405e14c15c6b48907e4e762e62bc42c0622397d9493bda0c32764bf981ed" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5627.json.gz", + "sha256": "162e6f13a6e3805517946309bd6247eaa45b337ab9c39621806b254b415075ec" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5644.json.gz", + "sha256": "3f2563d3c98f9d1170a583ba78bf171d5eb24e21976ddb026216bc637fc8a2ad" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5650.json.gz", + "sha256": "e94809cecf9e9cba56dd7a8a11ff1edeedc4c34013ff6caebdaf3b021351cf8c" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5660.json.gz", + "sha256": "9e78864cd46fc443c6183674588c99c52cfb8e8e408c7ba09bb50cf4694463f6" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5666.json.gz", + "sha256": "885850a20f04c1e788b432c376179e4c3e06a198e464f709ccb1f36eab44a367" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5678.json.gz", + "sha256": "b56281a67f84832198be2f2ad36d87b75244d424f1e0a6f4dda2df74f20cc08d" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5678_af814f6f.json.gz", + "sha256": "b56281a67f84832198be2f2ad36d87b75244d424f1e0a6f4dda2df74f20cc08d" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5684.json.gz", + "sha256": "d6db1d0d97b13ea483a462c65437664d15d34dec56c3682cf6e1de31266ec6c2" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5713.json.gz", + "sha256": "9fd67dd89ed24a644257cd9aef06934ed4c6fbe0441804684a968868f2ef66a8" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5713_a5348f71.json.gz", + "sha256": "9fd67dd89ed24a644257cd9aef06934ed4c6fbe0441804684a968868f2ef66a8" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5718.json.gz", + "sha256": "cff7196f8b168c4ebf8227185eed98387b66ec5db0179108adfea4045775cc31" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5718_a1534ac4.json.gz", + "sha256": "cff7196f8b168c4ebf8227185eed98387b66ec5db0179108adfea4045775cc31" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5739.json.gz", + "sha256": "88865e48e5cfe3bfcf28d6343cb166e98785a98dd102601d98870b068b125a85" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5739_b93d749a.json.gz", + "sha256": "88865e48e5cfe3bfcf28d6343cb166e98785a98dd102601d98870b068b125a85" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5751.json.gz", + "sha256": "fb60e34238a57a147f53aadb1af1209a562e2dcd18b05a29557df452cfe83133" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5756.json.gz", + "sha256": "a767dc298dee729d73389cd9240922e28024452d76442931396fb8307763752c" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5774.json.gz", + "sha256": "7c393444fa5b9a6941471d02047beb2aa8285e5614bb052fb85458b69236a38a" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5786.json.gz", + "sha256": "35fbd3049ab7a731ed245944257e8fdad1eaa4c3baca71761bca7bf5f95f1243" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5795.json.gz", + "sha256": "4a2b3ba9e880a59274b98ddbfb39a39c287ba67185fe65ef4f63202b364ee742" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5796.json.gz", + "sha256": "7c68c9ef9f17e3a67c5c9794a097a183ae469dd2c81cb0b3a59f102077d8c591" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5802.json.gz", + "sha256": "a348d9fe0df9af64035451b1007d4d9e97b312d661548b148c9a996f2f48d06d" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5802_9bab1ca9.json.gz", + "sha256": "a348d9fe0df9af64035451b1007d4d9e97b312d661548b148c9a996f2f48d06d" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5811.json.gz", + "sha256": "690656bfca9c6f0366527d158ca4edb14f83c410604d647953c20c7c94bea2e8" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5811_883ab9ca.json.gz", + "sha256": "690656bfca9c6f0366527d158ca4edb14f83c410604d647953c20c7c94bea2e8" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5812.json.gz", + "sha256": "3cef177e5e2413bf12bdd1cfa00a24f50dada4c6625e144ab4d7c133b170f1b9" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5827.json.gz", + "sha256": "5d50e5654910c9535e9025de0f644bb2dece2396e799b4a766110363448fd0b0" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5827_05cd36e5.json.gz", + "sha256": "5d50e5654910c9535e9025de0f644bb2dece2396e799b4a766110363448fd0b0" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5907.json.gz", + "sha256": "b69a9cb3a26d4f40aa7ad14f814b188fe16a782999f6f56292538e447d67b284" + }, + { + "path": "research/p104-designer-toolkit-v2/words/5907_c1cbd9e3.json.gz", + "sha256": "b69a9cb3a26d4f40aa7ad14f814b188fe16a782999f6f56292538e447d67b284" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6030.json.gz", + "sha256": "7834725d9e34ee846a9ccc615221ea81e0201613938afa185d2eda0c9a6c232f" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6030_772dd10a.json.gz", + "sha256": "7834725d9e34ee846a9ccc615221ea81e0201613938afa185d2eda0c9a6c232f" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6143.json.gz", + "sha256": "108f3ae8ed1e30e8c525c13ab98159cb43a3b195b887bc24984eca3a95531436" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6144.json.gz", + "sha256": "c71985d96bf3d4a35aae111aaba87e376f7367efb4a5686278ef293732757533" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6145.json.gz", + "sha256": "390c2c8717cf01753631c4cc253d2165ce80cd5df0f4bddbc964d024b8d5a861" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6167.json.gz", + "sha256": "68d1ff048bc6d30d85ceaeb38e2557adab87b20a9c67cf73948f95f54104575f" + }, + { + "path": "research/p104-designer-toolkit-v2/words/6167_564a076b.json.gz", + "sha256": "68d1ff048bc6d30d85ceaeb38e2557adab87b20a9c67cf73948f95f54104575f" + }, + { + "path": "research/p104-designer-toolkit-v2/words/on5612.json.gz", + "sha256": "3b74f807a4f9a59fbb1692497cf623531188419facdf34887d98b39679febdc6" + } + ], + "retained_words_note": "Words published by the swarm PRs named by their number (and, for the #6030 lineage, by the rebuild outputs of the toolkit itself); byte-identical to the PR files where the PR ships the word. Used as test fixtures and as the base words of `tk rebuild`.", + "retained_profiles": [ + { + "path": "research/p104-designer-toolkit-v2/profiles/5551.json", + "sha256": "12aa7a77381c275540b582bc798a39a896f5eb9d5cbaf44cc4d8f0ff77598fdd" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5565.json", + "sha256": "ab68482e88106f72ce24c32a017f3f32451fd9dc2b5bb1ad16258b7b19e1c675" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5580.json", + "sha256": "22ea851fba99f06371ff8554a5372a9b07e42a325f1dd97c5f404900160f3bd9" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5599.json", + "sha256": "1b4f10714c3021351cbbad4c2206696a763076b34835a0b8c3e2355d60d99adb" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5612.json", + "sha256": "fefda04d1bbc3b633e63a7a33fded25d561449855784f007ac20d1aa45b5ce64" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5613.json", + "sha256": "a5fa16e2e031ba86586bc20241d87ec0a160a4d2c7a54feee18bdb1f712d2ca9" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5644.json", + "sha256": "87ebae982d20df93744127816101e30c095e5bf126f1fd716138a3c802fbc923" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5650.json", + "sha256": "5483818e3a425c50883b8f3c1ddccf3248bb8da32e701f503feac9040765caaf" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5660.json", + "sha256": "15c2f40c9f3cde7f43ae82e057e834a2216f6f30a18d185c6d9409e6242d5b54" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678.json", + "sha256": "ca9c9ce675158684feae5bf36413fd2d084c7e5f426f5b74d8788a06da49c93d" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678_af814f6f.json", + "sha256": "ad6adf467f913bbde1384397fe56ef91ab16c07a52c8de4968f347245e558855" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5713.json", + "sha256": "87a8ee3deff2bb55de0dbb142b47a45e241c801bfe38f3ca8f546abb091b2d36" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5713_a5348f71.json", + "sha256": "1113c51e9abb230331fc7c506c87d28e275871b3a1bdf225d5480c714d8480f9" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5718.json", + "sha256": "fc1b965f2253f350700360f3534a9a0f1e4f38339864d46825f4ae623ccd18fa" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5718_a1534ac4.json", + "sha256": "d1ac62992aed776d6146de15b5d3b2c1db6955c1d0a8f186555a2a6f15997266" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739.json", + "sha256": "125782f8129a93cc56e14d298f6952b177999babb60132aa790cee7034ec8853" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739_b93d749a.json", + "sha256": "da7f2cf2fa0bbcdc41ae925c182a1df8314abc2ea0c0e1e549ed6cfa93e0a5ed" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5751.json", + "sha256": "09e6c00220a9ef0d4b96e0d0b695a21c51352ef384202bb38383e250b48b9f19" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5756.json", + "sha256": "fa66d55a54f1a7eab96d83789e4ff2a12ae9f1e65426554b084dbd21a7802e5c" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5774.json", + "sha256": "26919f0d59cd72bcd09569acdc2069cfed585e6f7d7669ebaf1606f700ac397c" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5786.json", + "sha256": "003db892be69196ba08d932a27d5ad0c1c591c5c81e52f766cf0c3a73744fd15" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5796.json", + "sha256": "c435c2a37d46054fe8e47d876c12d93cf7b400ffbaed1c267f065ca195b9199d" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5802.json", + "sha256": "31e3cef05d43beed270ee94eb0e12137d70d801eb64b8d1e7c548e174b29b1b5" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5802_9bab1ca9.json", + "sha256": "d96249b1e783bb406ba90f865b6e82e4dddb824a7f62d4a8034ea867a235afce" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5811.json", + "sha256": "0ada18e84846fa8ce4f2903305baa3e202609640a685c2b9771bdeff198882a7" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5811_883ab9ca.json", + "sha256": "94c5bee590108978e66c895ec7dba088e9594a0e261cf22093c39a11ab51e3be" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5812.json", + "sha256": "e0b5bbecf0739a10fcabd3af3dbd1594ada7a95efbb1c57e8f2f3ea2e23877c6" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5827.json", + "sha256": "0122df154c4bdbee6ca43987e41a5584a8194f8c6fc152479392a0aab49fad62" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5827_05cd36e5.json", + "sha256": "2fbd7dd08d695eb16d7b3abacc4a757c11ee55e9d2fb46c286a3bdaa94edca95" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5907.json", + "sha256": "971b7a6e733fd8ef06d57175dc1c720e9efb8362c9fd29c38bf77d1518fe5609" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5907_c1cbd9e3.json", + "sha256": "b8ac3ca035ddf9ca5ce58213af7a075a017d5b837edb49f085d557078c433946" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6030.json", + "sha256": "debcc649fa5bd9f553fb50ad99ce3b155772c6432440d65eeefc685e9adbb0ce" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6030_772dd10a.json", + "sha256": "e3070b2637bf8c13377ebcfade0a6e7c41dabb8e144c6a84a43a8b48b6506ccb" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6143.json", + "sha256": "9215ff0f581016d8667afc23931644e6241bd27ab1ec1c4a829f608b7d9521f0" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6144.json", + "sha256": "027e80d12d1af7db2730e26d84a9b1e6fed6255914a5c68565ef657c599344f7" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6167.json", + "sha256": "88bcd134b6bfd134686460ebf1f79f11a60780f861aa2ee5aa6ee6dab8a35815" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6167_564a076b.json", + "sha256": "fedacae1f3dc3be05d0f5265afa7a2d1f53c5fc2ae27e270f5101062a06d5fda" + } + ], + "retained_verifier_sources": [ + { + "path": "research/p104-designer-toolkit-v2/real/pr5551-pricing.py", + "sha256": "80e55ca33c4328f406fd09c5bd27df1db03cfd7847ff3c5c3151ede673629290" + }, + { + "path": "research/p104-designer-toolkit-v2/real/p5660/pr5627-local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/real/p5660/pricing.py", + "sha256": "158c0245cd7e24b174b3d23f6825dc4689602a10bdbbf0a22f5b8ddc70c4c43a" + }, + { + "path": "research/p104-designer-toolkit-v2/real/p5612/pr5599-local.py", + "sha256": "ef430511ce36fc658ab711bd84cd2d7b484b8af173238ff89cbfec6139fefbad" + }, + { + "path": "research/p104-designer-toolkit-v2/real/p5612/prepared573_local.py", + "sha256": "17c41be8d49db557a4c7dd1a4cd9bdd3972a6d6847eddf4dff7c888c476b37b3" + }, + { + "path": "research/p104-designer-toolkit-v2/real/p5612/pricing.py", + "sha256": "fcfa362995546f284f6dd49664dfea95c055fd3bb01ae474232dab094d5501ec" + }, + { + "path": "research/p104-designer-toolkit-v2/splitvendor/NOTICE", + "sha256": "ad25dec66fdbd38ce4a848996d7b5f55b7ac0c6d748c023d470146fa68db8d61" + }, + { + "path": "research/p104-designer-toolkit-v2/splitvendor/SPLITS_5599n.json", + "sha256": "0bf3cf7d2abe118daa6d319a40f4f1b74b3c993d21b8d0fcb95299624797b244" + }, + { + "path": "research/p104-designer-toolkit-v2/splitvendor/construct.py", + "sha256": "40151f7d8e716da869b900981f9a1b0315e30c0cec546c6a0780394e06634d7e" + }, + { + "path": "research/p104-designer-toolkit-v2/splitvendor/local.py", + "sha256": "7d5d9823aa944dd977b9f27cfd2e389c1d9138aece99ede772c51c8148bc0761" + }, + { + "path": "research/p104-designer-toolkit-v2/splitvendor/search.py", + "sha256": "25f7e25e7d6fc9c9b4a3ee1c8e7f4321abc489e8300fc24668b9f79fdc155cc9" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5786/base_local.py", + "sha256": "4d6db6dae893fc4e7e31148d2a8144d7a1a2afbba4b48f4532b0a1f1a9804f9e" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5786/pricing.py", + "sha256": "55fe9194ed9de830623f69472be808a043f129cedd2ba0c97ec49f6ae41df2a1" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6167/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6167/pricing.py", + "sha256": "bba1611b05b6cc35279aa1667dcc62ce0e7f27f0ba21f20eb68244fa772e0ae7" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5718/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5718/pricing.py", + "sha256": "1f074ad6b2512755f73bf5276e304838e2228aa4e96bcd580dc5de726894c587" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5774/base_local.py", + "sha256": "0a3664cd5f077e020a62903f093fff6a1617a84a048137bf812af67be9d1b1c8" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5774/pricing.py", + "sha256": "0f6f0e33bf78ba35873d4ed103bb089542b84b10388c7a5f4a546c15bb7e4493" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5599/base_local.py", + "sha256": "ef430511ce36fc658ab711bd84cd2d7b484b8af173238ff89cbfec6139fefbad" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5599/pricing.py", + "sha256": "473e10cbd92b06736d33d80c0ef742f12f2d08cfeba9e698b1de6c3648bbb217" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5751/base_local.py", + "sha256": "fc7c7293f7cffb8a9074e65b926e1782f2ebce2991c9ea75d42b94e888052689" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5751/pricing.py", + "sha256": "c1723babfaacb4ef8ca274e22dbefc499ab92fcd9fda616e29bf9693dc81516a" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5756/base_local.py", + "sha256": "fc7c7293f7cffb8a9074e65b926e1782f2ebce2991c9ea75d42b94e888052689" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5756/pricing.py", + "sha256": "2a8f0d74a16c8ad3b595e2100f8c074122ecd2c1babf66a4495b20ba9e651ce8" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5565/base_local.py", + "sha256": "878734dfd64c4b9d362d0ae476cc5c2a19fe93e48b7378763b23f3e0dd0a5a71" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5565/pricing.py", + "sha256": "4f27bae38f55996a01277206e4c78fd8c210e4e8b381652a9744c734d794339c" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6144/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6144/pricing.py", + "sha256": "038c713b602adf3516260278ad4c79736b6b0548013e68b0bea2d1eb99a451f3" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6143/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6143/pricing.py", + "sha256": "929d65ab85bb1d880515363669293f75d50065674bd7e3475d20ef1517d8713b" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678/pricing.py", + "sha256": "0f333369792e7cbec5bbcfb5a6ec6577c2e766598bd6b7f3a9b5c7c3a616a52d" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5812/base_local.py", + "sha256": "91d7cd961b8510aa9f1d81fbb732be2571dd4d5522a066e46c2ebca6112b389f" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5812/pricing.py", + "sha256": "28f01a7b0515c209db54181f081ea0bb372b449ac45da35d2e3da2c99d4ac5ec" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5613/base_local.py", + "sha256": "ef430511ce36fc658ab711bd84cd2d7b484b8af173238ff89cbfec6139fefbad" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5613/pricing.py", + "sha256": "d6d9b3c3f3663b1db45f26abb406c8e135c62dbd843c0d8ac3d958ebdec658fc" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5613/replay_local.py", + "sha256": "17c41be8d49db557a4c7dd1a4cd9bdd3972a6d6847eddf4dff7c888c476b37b3" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6030/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6030/pricing.py", + "sha256": "3c6cf2966ccfe5a5fb6c90f89f46ac224ea455127e35dd34975683c68c36d710" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5718_a1534ac4/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5718_a1534ac4/pricing.py", + "sha256": "1f074ad6b2512755f73bf5276e304838e2228aa4e96bcd580dc5de726894c587" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5612/base_local.py", + "sha256": "ef430511ce36fc658ab711bd84cd2d7b484b8af173238ff89cbfec6139fefbad" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5612/pricing.py", + "sha256": "fcfa362995546f284f6dd49664dfea95c055fd3bb01ae474232dab094d5501ec" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5612/replay_local.py", + "sha256": "17c41be8d49db557a4c7dd1a4cd9bdd3972a6d6847eddf4dff7c888c476b37b3" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739_b93d749a/base_local.py", + "sha256": "878734dfd64c4b9d362d0ae476cc5c2a19fe93e48b7378763b23f3e0dd0a5a71" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739_b93d749a/pricing.py", + "sha256": "69910e0989d17551dbce2bf31ee6cc28990b8fa0d46a68c78897e290fbe99753" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739_b93d749a/replay_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5660/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5660/pricing.py", + "sha256": "158c0245cd7e24b174b3d23f6825dc4689602a10bdbbf0a22f5b8ddc70c4c43a" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5650/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5650/pricing.py", + "sha256": "bbd0ea158528cc60cbf5f22177fffe010c0748d730e0a64c414d4bc292828996" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5802/base_local.py", + "sha256": "91d7cd961b8510aa9f1d81fbb732be2571dd4d5522a066e46c2ebca6112b389f" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5802/pricing.py", + "sha256": "5826297f25fd063d4adf75e161088baf6a84e55c587203ff807b74116c1a6952" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5827_05cd36e5/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5827_05cd36e5/pricing.py", + "sha256": "04b36429147f2809468d9ff037e26eaa70e66a5180e4b5c71a060bd5d14ffd9c" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678_af814f6f/base_local.py", + "sha256": "878734dfd64c4b9d362d0ae476cc5c2a19fe93e48b7378763b23f3e0dd0a5a71" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678_af814f6f/pricing.py", + "sha256": "0f333369792e7cbec5bbcfb5a6ec6577c2e766598bd6b7f3a9b5c7c3a616a52d" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5678_af814f6f/replay_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5713/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5713/pricing.py", + "sha256": "f3d500ada46124241e2b35cd649d58b2f3a43418aeda8834a48c1c06e5306e90" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5580/base_local.py", + "sha256": "878734dfd64c4b9d362d0ae476cc5c2a19fe93e48b7378763b23f3e0dd0a5a71" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5580/pricing.py", + "sha256": "e8ffdadf454639fd434a17e276b062d9d6df8310b1aa0ef15e5fb6a4468d6ba2" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6167_564a076b/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6167_564a076b/pricing.py", + "sha256": "bba1611b05b6cc35279aa1667dcc62ce0e7f27f0ba21f20eb68244fa772e0ae7" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5811_883ab9ca/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5811_883ab9ca/pricing.py", + "sha256": "3498cb7682ef0f429c3616d59819d785b11dc5d39494176a256dca1c777354b3" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739/base_local.py", + "sha256": "878734dfd64c4b9d362d0ae476cc5c2a19fe93e48b7378763b23f3e0dd0a5a71" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739/pricing.py", + "sha256": "69910e0989d17551dbce2bf31ee6cc28990b8fa0d46a68c78897e290fbe99753" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5739/replay_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5802_9bab1ca9/base_local.py", + "sha256": "91d7cd961b8510aa9f1d81fbb732be2571dd4d5522a066e46c2ebca6112b389f" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5802_9bab1ca9/pricing.py", + "sha256": "5826297f25fd063d4adf75e161088baf6a84e55c587203ff807b74116c1a6952" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5551/base_local.py", + "sha256": "878734dfd64c4b9d362d0ae476cc5c2a19fe93e48b7378763b23f3e0dd0a5a71" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5551/pricing.py", + "sha256": "80e55ca33c4328f406fd09c5bd27df1db03cfd7847ff3c5c3151ede673629290" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5713_a5348f71/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5713_a5348f71/pricing.py", + "sha256": "f3d500ada46124241e2b35cd649d58b2f3a43418aeda8834a48c1c06e5306e90" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5907/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5907/pricing.py", + "sha256": "01b401b9104d9d23c4a14db06023d976d18286b749e0e461f4edb98613fc6a45" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5796/base_local.py", + "sha256": "fc7c7293f7cffb8a9074e65b926e1782f2ebce2991c9ea75d42b94e888052689" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5796/pricing.py", + "sha256": "fd1bf01c6fc8f16c2f15d45f94c79b2fffb0bc655793c1e9055e51f00d15bae8" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5827/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5827/pricing.py", + "sha256": "04b36429147f2809468d9ff037e26eaa70e66a5180e4b5c71a060bd5d14ffd9c" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5907_c1cbd9e3/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5907_c1cbd9e3/pricing.py", + "sha256": "01b401b9104d9d23c4a14db06023d976d18286b749e0e461f4edb98613fc6a45" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5811/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5811/pricing.py", + "sha256": "3498cb7682ef0f429c3616d59819d785b11dc5d39494176a256dca1c777354b3" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5644/base_local.py", + "sha256": "716d01a342467f87b14d67853d8de30740f9f2fa881afe271db0df5ef8b19697" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/5644/pricing.py", + "sha256": "1ceef843721af011c3af32b95e20486c3f53ef937489d559bec721c250499801" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6030_772dd10a/base_local.py", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + }, + { + "path": "research/p104-designer-toolkit-v2/profiles/6030_772dd10a/pricing.py", + "sha256": "3c6cf2966ccfe5a5fb6c90f89f46ac224ea455127e35dd34975683c68c36d710" + } + ], + "retained_verifier_sources_note": "Unmodified verifier sources of the swarm PRs (pricing.py / local.py of PR5551, 5599, 5612, 5627, 5660 and of every adopted profile under profiles//, plus the PR5599 split search); each keeps its own header and license. `tk adopt PR --refetch` re-derives them from the upstream PR head.", + "read_in_place": { + "path": "research/native-transpose-owned", + "note": "PR5392 package read unmodified at the base commit by tk pricer; price_r.py, verify_r.py and synth.py in pricer/ are the rank-r generalisation (PRICE8)." + } +} diff --git a/research/p104-designer-toolkit-v2/TASK.json b/research/p104-designer-toolkit-v2/TASK.json new file mode 100644 index 0000000000..9a0c15be50 --- /dev/null +++ b/research/p104-designer-toolkit-v2/TASK.json @@ -0,0 +1,73 @@ +{ + "schema_version": 1, + "task_id": "replay-runtime", + "priority_revision": 8, + "base_commit": "3f0152a32eeebac0df11946dbd50cabe5a7f7839", + "original_card": { + "id": "replay-runtime", + "question": "Can one measured replay bottleneck be sped up without dropping coverage?", + "starting_points": [ + "scripts/run_isolated_tests.py", + "scripts/verify_replay_coverage.py", + "certificates/selected-result.json" + ], + "methods": [ + "Profile one isolated replay and optimize the measured bottleneck.", + "Design source-bound reuse with explicit dependency invalidation and negative controls." + ], + "acceptance_gate": "Report before/after wall time on the same fixture, retained checks and invalidation behavior.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Resolve the current selected review, separate complex/ordinary BIT/admitted BIT/outer budgets, and compare the card against live handoffs before starting. Historical ceilings require exact source/model equivalence.", + "scope": "Source-binding orientation only; not a scientific replay or all-size proof. Materialize selected inputs if this checkout is sparse." + }, + "first_experiment": "Measure one unchanged fixture, preserve check coverage, and test one optimization with invalidation controls.", + "bottleneck_link": "Faster trustworthy replays increase review throughput and let mechanism candidates be checked sooner.", + "allowed_variations": [ + "Profile one stage or design one source-bound cache boundary." + ], + "scope_change_triggers": [ + "Skipping coverage or comparing different fixtures to claim speedup." + ], + "overlap_terms": [ + "replay runtime", + "cache invalidation", + "isolated tests" + ] + }, + "scope_status": "changed", + "actual_scope": "Package the P104 designer toolkit (exact pricing and legality oracle, verifier-profile adoption, the #6030 rebuild pipeline with the fold/hoist/retain constructor passes, the gen2/gen3 generators, sub-circuit extract/splice/re-solve tools, bulk evaluation and the floor LPs) as one reviewable tool with a regression suite. No word and no kappa claim.", + "scope_change_reason": "The replay-runtime card asks for a measured replay speed-up; this package ships the tooling and its exact-replay regression suite, including the rebuild chain and native replay kernels that were sped up while it was built, but makes no new performance claim. Recorded as changed.", + "bottleneck_link": "Side result (tooling). Comparing and extending frontier words requires the same exact invoice, localised legality verdict and constructor passes to be recomputed on any P104-family word; this makes the #6030 -> #6144 -> #6167 constructor steps reproducible by one command.", + "budget_minutes": 60, + "stop_rule": "Keep the package only if tests/regress.py --fast reproduces every exact number it wraps (kappa of the PR5545/5551/5553/5561/5907/5827 words, localised mutants, native replay equality) and the rebuild smoke reproduces #6030 at exact kappa; otherwise report the failing check instead of shipping.", + "outcome": "completed", + "evidence": "VERIFY.json runs tests/regress.py --fast (exact prices of six published words, localised legality mutants, native replay equality, screens executed on #5660, shipcheck, surgery round trip, rebuild mini chain at exact kappa .003125811557911897) and the retain pass on #6144 -> #6167.", + "author": "DreamingOfClouds, with Claude Opus 5.5 (Anthropic), via Claude Code", + "ai_assistance": "Prepared with Claude Opus 5.5 via Claude Code: Claude wrote and edited the tooling and tests under DreamingOfClouds' direction. Every command reproduces numbers published by the PRs it wraps or by exact recomputation; no independent human or proof-kernel acceptance is claimed.", + "open_questions": [ + { + "question": "Can the unshipped model inputs of planbuild (plan search population and class-break picks) be packaged so plan.py/build.py run from a fresh clone?", + "why_it_matters": "planbuild is shipped as source only; its published totals are not replayed in CI.", + "blocked_by": "Vendoring the PAIRMIX/HUBCOST/SKELGEN model trees.", + "first_step": "List the modules plan.py and build.py import and vendor the minimal closure." + }, + { + "question": "Can the fold pass (about 15 minutes per site) be made fast enough for generic CI to replay #6030 -> #6144 end to end?", + "why_it_matters": "CI currently replays the retain pass and the rebuild smoke only.", + "blocked_by": "Runtime of the exact IOROOT-style solve per site.", + "first_step": "Profile alignbuild/iob2.py on one site and cache the rule matrices." + }, + { + "question": "Are free helper start/final frames and the owned-inventory pins accepted by maintainers as part of the caller contract?", + "why_it_matters": "retime/evretime/rebuild gains are judged under the adopted profile's literals, which are conventions, not specification.", + "blocked_by": "Maintainer review.", + "first_step": "Run tk retime 5551 --free starts and compare with the finals-free word using tk diff." + } + ] +} diff --git a/research/p104-designer-toolkit-v2/VERIFY.json b/research/p104-designer-toolkit-v2/VERIFY.json new file mode 100644 index 0000000000..12620da653 --- /dev/null +++ b/research/p104-designer-toolkit-v2/VERIFY.json @@ -0,0 +1,32 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [ + "numpy==2.2.6", + "scipy==1.14.1", + "sympy==1.13.3" + ], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/tests/regress.py", + "--fast" + ], + "timeout_seconds": 600, + "checks": "Fast suite: exact kappa of PR5545/5551/5553/5561/5561s/5907/5827, native replay equality, screens executed on #5660, legality check with localised mutants, shipcheck, surgery round trip on #6030, rebuild mini chain (skeleton + hubs) at exact kappa .003125811557911897." + }, + { + "argv": [ + "{python}", + "-B", + "{package}/tests/retain_test.py" + ], + "timeout_seconds": 180, + "checks": "R-RETAIN: #6144 -> #6167 bit-identical and 0 sites on #6167." + } + ] +} diff --git a/research/p104-designer-toolkit-v2/a2x.py b/research/p104-designer-toolkit-v2/a2x.py new file mode 100644 index 0000000000..bb3cf99758 --- /dev/null +++ b/research/p104-designer-toolkit-v2/a2x.py @@ -0,0 +1,67 @@ +"""tk a2x -- A2 paid rank exchange screen (PR5643 zxv; composed in PR5650). Move class: a scalar chain ADD(t,s,c1) @i ... first reader ADD(u,t,c2) @j (no write of s between) +is rewritten ADD(u,s,c1*c2) @f2 in place of event i, ADD(u,t,c2) kept, ADD(t,s,c1) @f3 re-inserted after position P3 in [j, latest] (before the next read of t / write of s). +Values are unchanged (u gets c1*c2*s early, t gets c1*s late) but the frame itineraries of t, s, u change: a paid rank is exchanged for a cheaper one when +H(rank profile) improves. sites(): every chain with t,s,u public and distinct; the free parameters (f2, P3, f3) range over frames near u,s / t,s plus the chain's own frames +(MOVES1026 a2scan.py); sites on the chart pair (3,127) only are skipped unless --all-frames. Ported on the shared View (any owned count, public = len(initial)).""" +import collections +from bisect import bisect_right,bisect_left +from fractions import Fraction as Q +import movekit as M +from movekit import qs + +class A2X(M.Plugin): + name='a2x'; doc=__doc__; site_fields=('t','s','u','c1','c2') + all_frames=bool(int(__import__('os').environ.get('TK_A2X_ALL','0'))) # TK_A2X_ALL=1: also chains on the (3,127) charts and chains whose reader sits on another chart (f1 != fj) + def prepare(self,v): + S=v.S; rd=collections.defaultdict(list); wr=collections.defaultdict(list); touch=collections.defaultdict(list) + for i,e in enumerate(S): + if e[0]=='ADD': touch[e[1]].append(i); touch[e[2]].append(i); rd[e[2]].append(i); wr[e[1]].append(i) + elif e[0]=='SCALE': touch[e[1]].append(i); rd[e[1]].append(i); wr[e[1]].append(i) + elif e[0]=='COPY': touch[e[1]].append(i); touch[e[2]].append(i); rd[e[2]].append(i); wr[e[1]].append(i) + else: touch[e[1]].append(i); wr[e[1]].append(i) + return dict(rd=rd,wr=wr,touch=touch) + def chains(self,v,ctx): + S=v.S; pub=v.n; rd,wr=ctx['rd'],ctx['wr']; out=[] + for i,e in enumerate(S): + if e[0]!='ADD' or e[1]>=pub or e[2]>=pub: continue + t,s=e[1],e[2]; L=rd[t]; k=bisect_right(L,i) + if k>=len(L): continue + j=L[k]; ej=S[j] + if ej[0]!='ADD' or ej[1]>=pub or ej[1] in(s,t): continue + ws=wr[s]; k2=bisect_right(ws,i) + if k2 {key: [ok, rank_or_reason]}, exactly N.ok of tkcommon.native_mod(). + SPEED: independent pairs are split over _par_jobs() worker processes (nativepar.py, same interpreter flags, inherited env incl. TK_NATIVE_REF); + any worker failure falls back to the serial in-process computation of the missing keys.""" + out={}; items=sorted(items); j=_par_jobs(len(items)) + if j>1: + import subprocess + flags=['-I'] if sys.flags.isolated else [] + procs=[subprocess.Popen([sys.executable]+flags+['-B',HERE+'/nativepar.py'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True) for c in range(j)] + for c,p in enumerate(procs): # all workers start first (imports overlap); each reads all of stdin before it writes anything, so they run concurrently + try: p.stdin.write(json.dumps([[k,list(a),list(b)] for k,a,b in items[c::j]])); p.stdin.close() + except Exception: pass + for p in procs: + try: + o=p.stdout.read(); p.stderr.read(); p.wait() + if p.returncode==0: out.update({k:[bool(v[0]),v[1]] for k,v in json.loads(o).items()}) + except Exception: pass + miss=[(k,a,b) for k,a,b in items if k not in out] + if miss: + N=native_mod() + for k,a,b in miss: + ok,v=N.ok(tuple(a),tuple(b)); out[k]=[bool(ok),v] + return out +def pair_verdicts(fr,pairs): + """{key: [ok, rank_or_reason]} for the frame-index pairs (key = _key of the two bases), from the persistent cache (fast mode) + compute_pairs for the rest. + Returns (verdicts, number computed). New fast-mode verdicts are persisted (one file per process, as before).""" + C=_load_pairs() if _paircache_on() else {} + need={} + for a,b in pairs: + k=_key(fr[a],fr[b]) + if k not in C and k not in need: need[k]=(k,tuple(fr[a]),tuple(fr[b])) + if need: + got=compute_pairs(list(need.values())); C.update(got) + if _paircache_on(): _NEW.update(got); flush_pairs() + return C,len(need) +def native_pairs(w,pairs=None): + """verify every distinct MOVE frame pair and helper boundary (rank == dim gap). Returns dict(distinct,bad=[(a,b,reason)],seconds,computed)""" + fr=w['frames']; t=time.time(); bad=[] + if pairs is None: + main=set(w['live'])|{r+112 for r in w['live']} + pairs={(e[2],e[3]) for e in w['program'] if e[0]=='MOVE'}|{(w['initial'][r],w['final'][r]) for r in range(len(w['initial'])) if r not in main} + C,comp=pair_verdicts(fr,pairs) + for a,b in sorted(pairs): + k=_key(fr[a],fr[b]) + if not C[k][0]: bad.append((a,b,C[k][1])) + return dict(distinct=len(pairs),bad=bad,computed=comp,seconds=round(time.time()-t,1)) +def native_light(L,w): + """the dict price.run needs from local.native(w), without the per-pair Gaussian work (done by native_pairs, cached)""" + n=len(w['initial']); main=set(w['live'])|{r+112 for r in w['live']} + rep=native_pairs(w) + if rep['bad']: raise ValueError('Native boundary rank / phase: %d bad pairs, first %s'%(len(rep['bad']),rep['bad'][0])) + prof={} + for r in range(n): + if r not in main: + rk=abs(len(w['frames'][w['initial'][r]])-len(w['frames'][w['final'][r]])); prof[rk]=prof.get(rk,0)+1 + w2=json.loads(json.dumps(w)); w2['program']=[e for e in w2['program'] if e[0]!='MOVE'] + for r in range(n): + if r not in main: w2['final'][r]=w2['initial'][r] # keep the real adapter / literal-port code, drop the pair work + nat2=L.native(w2) + return {'distinct_maps':rep['distinct'],'main_adapters':nat2['main_adapters'],'helper_normalizers':2*sum(prof.values()),'helpers':prof,'light':True,'pairs':rep} +def ctl_phys(L,w): + f=CACHE+'/ctlphys_%s.pkl'%hashlib_sha(repr(tuple(w['ports']))) + if os.path.exists(f): + try: return pickle.load(open(f,'rb')) + except Exception: pass + import caller as C + ctl=C.construct(); phys=C.physical(ctl,w) + os.makedirs(CACHE,exist_ok=True); pickle.dump((ctl,phys),open(f+'.tmp','wb')); os.replace(f+'.tmp',f); return ctl,phys +def hashlib_sha(s): + import hashlib; return hashlib.sha256(s.encode()).hexdigest()[:16] +def _prepared_mods(): + """the vendored PR5612 checker stack (real/p5612: prepared573_local.py, pricing.py, pr5599-local.py from the pinned #5608 export): -> (R prepared573_local, L pr5599 local registered as `local`, pricing source)""" + import importlib.util,pathlib + d=HERE+'/real/p5612' + def mod(name,fn): + sp=importlib.util.spec_from_file_location(name,d+'/'+fn); m=importlib.util.module_from_spec(sp); sys.modules[name]=m; sp.loader.exec_module(m); return m + L=mod('local','pr5599-local.py'); L.ROOT=pathlib.Path(R.ROOT); R_=mod('prepared573_local','prepared573_local.py') + if R.CTRL not in sys.path: sys.path.insert(0,R.CTRL) + return R_,L,open(d+'/pricing.py').read() +def accept_prepared(path,w=None): + """acceptance for the prepared573 profile (PR5612): its own prepared573_local.replay + reverse_columns, the 5599 native() adapters, native pairs (cached; the retired role's + boundary pair IS checked, as chain5612 does, but its helper credit is withdrawn), caller/physical, and PR5612's pricing.py with only the census/claim literals patched.""" + import re,types + t0=time.time(); w=w or legal.load(path); res=dict(ok=False,stage=None,error=None,public=len(w['initial']),profile='p5612'); st='load' + try: + R_,L,psrc=_prepared_mods(); ret=legal.retired_of(w) + st='replay'; local=R_.replay(w) + st='reverse_columns'; R_.reverse_columns(w) + st='native' + rep=native_pairs(w); res['native_pairs']=rep['distinct']; res['native_computed']=rep['computed']; res['native_ref']=bool(native_is_ref()) + if rep['bad']: raise ValueError('Native boundary rank / phase: %d bad pairs, first %s'%(len(rep['bad']),rep['bad'][0])) + main=set(w['live'])|{r+112 for r in w['live']}; prof={} + for r in range(len(w['initial'])): + if r not in main and r not in ret: + rk=abs(len(w['frames'][w['initial'][r]])-len(w['frames'][w['final'][r]])); prof[rk]=prof.get(rk,0)+1 + w2=json.loads(json.dumps(w)); w2['program']=[e for e in w2['program'] if e[0]!='MOVE'] + for r in range(len(w['initial'])): + if r not in main: w2['final'][r]=w2['initial'][r] + nat2=L.native(w2) + native={'distinct_maps':rep['distinct'],'main_adapters':nat2['main_adapters'],'helper_normalizers':2*sum(prof.values()),'helpers':prof,'retired_helper':ret[0] if ret else None} + st='controller/physical'; ctl,phys=ctl_phys(L,w) + st='claim'; lg=legal.check(w) + if not lg['ok']: raise ValueError('illegal: %s'%(lg['violations'][:1],)) + T,Pp=X.invoice(lg); k=X.kappa(T,Pp) + kstr='%.9f'%(k-5e-9-2e-9); tested='%.10f'%(float(kstr)+5e-9) + sumT=sum(T.values()); sumP=sum(Pp.values()); surplus=sum(r*c for r,c in T.items())-sum(r*c for r,c in Pp.items()) + res['claim']=dict(KAPPA=kstr,TESTED=tested,sumT=sumT,sumP=sumP,surplus=surplus) + for pat,rep_ in((r"KAPPA, TESTED = Q\('[^']*'\), Q\('[^']*'\)","KAPPA, TESTED = Q('%s'), Q('%s')"%(kstr,tested)), + (r"sum\(targets.values\(\)\) == \d+ and sum\(paid.values\(\)\) == \d+","sum(targets.values()) == %d and sum(paid.values()) == %d"%(sumT,sumP)), + (r"== 760,","== %d,"%surplus),(r"PREVIOUS = Q\('[^']*'\)","PREVIOUS = Q('.00310184')")): + psrc,n_=re.subn(pat,rep_,psrc) + if n_!=1: raise SystemExit('pricing template literal count %d for %s'%(n_,pat)) + st='price.run'; m=types.ModuleType('price_patched_p5612'); m.__dict__['__file__']=HERE+'/real/p5612/pricing.py'; exec(compile(psrc,'price_patched_p5612','exec'),m.__dict__) + r=m.run(local,native,ctl,phys) + lo,hi=r['raw_root_interval']; res['crossing_lo']='%.14f'%float(Q(lo)); res['crossing_hi']='%.14f'%float(Q(hi)) + res['outer_checks']=(len(r['outer']['strict_checks']),len(r['outer']['functional_checks'])); res['paid_calls']=r['paid_calls']; res['productive_fields']=r['productive_fields'] + res['ok']=True; st='done' + except BaseException as e: + if isinstance(e,KeyboardInterrupt): raise + res['error']=(str(e) or repr(e))[:400] + res['stage']=st; res['seconds']=round(time.time()-t0,1); return res +def accept_owned9(path,w=None): + """acceptance for the p5660 profile (#5644/#5650/#5660): PR5627's local.py (owned_fields) replay + reverse_columns, its native() adapters, native pairs (cached), caller/physical and the + #5660 pricing.py (reserve 1/10^12) with only the census/claim literals patched. Same cached/real split as accept_prepared.""" + import re,types,importlib.util,pathlib + t0=time.time(); w=w or legal.load(path); res=dict(ok=False,stage=None,error=None,public=len(w['initial']),profile='p5660'); st='load' + try: + d=HERE+'/real/p5660' + sp=importlib.util.spec_from_file_location('local',d+'/pr5627-local.py'); L=importlib.util.module_from_spec(sp); sys.modules['local']=L; sp.loader.exec_module(L); L.ROOT=pathlib.Path(R.ROOT) + if R.CTRL not in sys.path: sys.path.insert(0,R.CTRL) + psrc=open(d+'/pricing.py').read() + st='replay'; local=L.replay(w) + st='reverse_columns'; L.reverse_columns(w) + st='native'; native=native_light(L,w); res['native_pairs']=native['pairs']['distinct']; res['native_computed']=native['pairs']['computed']; res['native_ref']=bool(native_is_ref()) + st='controller/physical'; ctl,phys=ctl_phys(L,w) + st='claim'; lg=legal.check(w) + if not lg['ok']: raise ValueError('illegal: %s'%(lg['violations'][:1],)) + T,Pp=X.invoice(lg); k=X.kappa(T,Pp) + kstr='%.9f'%(k-5e-9-2e-9); tested='%.10f'%(float(kstr)+5e-9) + sumT=sum(T.values()); sumP=sum(Pp.values()); surplus=sum(r*c for r,c in T.items())-sum(r*c for r,c in Pp.items()) + res['claim']=dict(KAPPA=kstr,TESTED=tested,sumT=sumT,sumP=sumP,surplus=surplus) + for pat,rep_ in((r"KAPPA, TESTED = Q\('[^']*'\), Q\('[^']*'\)","KAPPA, TESTED = Q('%s'), Q('%s')"%(kstr,tested)), + (r"sum\(targets.values\(\)\) == \d+ and sum\(paid.values\(\)\) == \d+","sum(targets.values()) == %d and sum(paid.values()) == %d"%(sumT,sumP)), + (r"== 760,","== %d,"%surplus),(r"PREVIOUS = Q\('[^']*'\)","PREVIOUS = Q('.00310184')")): + psrc,n_=re.subn(pat,rep_,psrc) + if n_!=1: raise SystemExit('pricing template literal count %d for %s'%(n_,pat)) + st='price.run'; m=types.ModuleType('price_patched_p5660'); m.__dict__['__file__']=d+'/pricing.py'; exec(compile(psrc,'price_patched_p5660','exec'),m.__dict__) + r=m.run(local,native,ctl,phys) + lo,hi=r['raw_root_interval']; res['crossing_lo']='%.14f'%float(Q(lo)); res['crossing_hi']='%.14f'%float(Q(hi)) + res['outer_checks']=(len(r['outer']['strict_checks']),len(r['outer']['functional_checks'])); res['paid_calls']=r['paid_calls']; res['productive_fields']=r['productive_fields'] + res['ok']=True; st='done' + except BaseException as e: + if isinstance(e,KeyboardInterrupt): raise + res['error']=(str(e) or repr(e))[:400] + res['stage']=st; res['seconds']=round(time.time()-t0,1); return res +# ---- SPEED (Oct 28): memo of whole stack-profile acceptances, keyed by the word CONTENT (sha256 of the decompressed JSON, so gzip mtimes do not matter), +# the resolved profile + sha256 of its JSON (stack pins), the sources of every module on the acceptance path, and the env switches that can change a verdict. +# Only terminal deterministic outcomes are stored (stage 'done', or a need()/ValueError rejection inside replay..price.run); never worker crashes or timeouts. +# Off under --native-ref / TK_NATIVE_REF=1 and with TK_ACCEPT_CACHE=0. A hit returns the stored dict plus cached=True. +_MEMO_STAGES={'done','replay','reverse_columns','native','claim','price.run'} +_MEMO_ENV=('TK_NATIVE_REF','TK_PROFILE','TK_FREE_BOUNDS','TK_VERIFIER_PROFILE','TK_NATIVE_PAIRCACHE','TK_FAST_ADAPTERS','TK_PRICERUN_CACHE') +def _memo_key(path,pn): + if os.environ.get('TK_NATIVE_REF')=='1' or os.environ.get('TK_ACCEPT_CACHE','1')=='0': return None + try: + import hashlib,gzip + raw=open(path,'rb').read() + if raw[:2]==b'\x1f\x8b': raw=gzip.decompress(raw) + code=b''.join(open(os.path.join(HERE,f),'rb').read() for f in ('accept.py','tkstack.py','fastnative.py','nativepar.py','real.py','tkcommon.py')) + code+=open(legal.__file__,'rb').read()+open(X.__file__,'rb').read() + pj=open(DATA_PROFILES[pn]['_file'],'rb').read() + h=hashlib.sha256(); [h.update(hashlib.sha256(b).digest()) for b in (raw,code,pj,repr((pn,[(k,os.environ.get(k)) for k in _MEMO_ENV])).encode())] + return h.hexdigest() + except Exception: return None +def _memo_get(k): + if not k: return None + try: return json.load(open(CACHE+'/acceptmemo/%s.json'%k)) + except Exception: return None +def _memo_put(k,r): + if not k or r.get('stage') not in _MEMO_STAGES or (r.get('stage')!='done' and not r.get('error')): return + try: + d=CACHE+'/acceptmemo'; os.makedirs(d,exist_ok=True); f='%s/%s.json'%(d,k); json.dump(r,open(f+'.%d.tmp'%os.getpid(),'w'),default=str); os.replace(f+'.%d.tmp'%os.getpid(),f) + except Exception: pass +def accept(path,w=None): + """-> dict(ok, stage, error, crossing_lo/hi (14 d.p.), claim, seconds, native pairs info). Never raises for a rejection.""" + t0=time.time(); w=w or legal.load(path); n=len(w['initial']); res=dict(ok=False,stage=None,error=None,public=n) + pn,pr=profile_of(w) + if pr.get('verifier')=='stack' and pn in DATA_PROFILES and DATA_PROFILES[pn].get('stack'): # adopted profile: the PR's own vendored local.py / pricing.py (sandboxed worker) + import tkstack + mk=_memo_key(path,pn); r=_memo_get(mk) + if r is not None and not tkstack.check_pins(tkstack.profile(pn)): r['cached']=True; return r # a memo hit is honoured only while the vendored stack files still match their pins + r=tkstack.run_isolated(tkstack.profile(pn),path,patched=True); r.pop('result',None); _memo_put(mk,r); return r + if pr.get('verifier')=='prepared573': return accept_prepared(path,w) + if pr.get('verifier')=='owned9': return accept_owned9(path,w) + if not pr['real_stack']: res.update(stage='profile',error='profile %s has its own verifier; real price.run of this stack not applicable (use fast acceptance)'%pn,unsupported=True); return res + try: + L=_local(n) + st='replay'; local=L.replay(w) + st='reverse_columns'; L.reverse_columns(w) + st='native'; native=native_light(L,w); res['native_pairs']=native['pairs']['distinct']; res['native_computed']=native['pairs']['computed']; res['native_ref']=bool(native_is_ref()) + st='controller/physical'; ctl,phys=ctl_phys(L,w) + st='claim'; rep=legal.check(w) + if not rep['ok']: raise ValueError('illegal: %s'%(rep['violations'][:1],)) + T,Pp=X.invoice(rep); k=X.kappa(T,Pp) + kstr='%.9f'%(k-5e-9-2e-9); tested='%.10f'%(float(kstr)+5e-9) + sumP=sum(Pp.values()); surplus=sum(r*c for r,c in T.items())-sum(r*c for r,c in Pp.items()) + res['claim']=dict(KAPPA=kstr,TESTED=tested,sumT=sum(T.values()),sumP=sumP,surplus=surplus) + st='price.run'; P=R.patched_price(L,kstr,sum(T.values()),sumP,surplus,tested); r=P.run(local,native,ctl,phys) + lo,hi=r['raw_root_interval']; res['crossing_lo']='%.14f'%float(Q(lo)); res['crossing_hi']='%.14f'%float(Q(hi)) + res['outer_checks']=(len(r['outer']['strict_checks']),len(r['outer']['functional_checks'])); res['paid_calls']=r['paid_calls']; res['productive_fields']=r['productive_fields'] + res['ok']=True; st='done' + except BaseException as e: + if isinstance(e,KeyboardInterrupt): raise + res['error']=(str(e) or repr(e))[:400] + res['stage']=st; res['seconds']=round(time.time()-t0,1); return res +def main(argv=None): + a=[argv.word] if hasattr(argv,'word') else (argv or sys.argv[1:]); path=resolve(a[0]); r=accept(path) + print(json.dumps(r,indent=1,default=str)); return 0 if r['ok'] else 1 +if __name__=='__main__': sys.exit(main()) diff --git a/research/p104-designer-toolkit-v2/admit.py b/research/p104-designer-toolkit-v2/admit.py new file mode 100644 index 0000000000..54997a2cec --- /dev/null +++ b/research/p104-designer-toolkit-v2/admit.py @@ -0,0 +1,270 @@ +"""admit -- exact ADMISSIBILITY oracle for P104-family words (GENBUDGET. + +`tk check` says a word is LEGAL. A word is ADMISSIBLE when, in addition, the package's pricing.py would accept it: + events len(program) < event_cap (local.py 'Fixed operation bound'; package literal, 26000) + inventory (public, owned_fields, lifetimes, peak) pins (local.py 'Complete public and owned inventories'; package literals) + scalar local_scalar + routes < scalar_cap (pricing.py; routes = (sum paid + 2*helpers + 208 + 4*104 + 4*lifetimes)*1000; cap 10^7) + raw 18*cap + 15*1664 + 32*104*(phys+boundary+1026) < 1e9 (pricing.py 'Complete nonrecursive raw bound'; word independent, couples to the scalar cap) + tail alpha < 1-eps, gamma < D, delta < D, D^(v/8) < 1/16, 1/(1+v eps)+4/2^32 < 1, c^64 < b^63 (pricing.py literals c,b,u,v,D,eps) + theorem 1/(1+v eps) + 2 gamma^v + 2 delta^v < 1 (higher-moment-strictification README sec. 2: the REAL inequality; pricing's D-test is only a sufficient form) + compiler theta^power < t*145^(-vT), 145^(vT) < 2^power, 2 (c^v)^64 <= (145^v)^63, H > 8v with (step j+1)^power < 2^j (pricing.py; theta, power literals) + +API + check(src, lit=None, tested=None) src = IncrWord | word dict | path/alias. -> dict(constraints=[{name,kind,value,limit,slack,ok,note}], ok, counts, lit, tested) + lit=None -> the word's adopted profile literals. slack > 0 means admitted (all slacks are 'limit - value', >0 good). + best(src) -> choose the best legal FREE literals for this word (tail c,b,u,v,D,eps,power; event/scalar caps needed) and say whether ANY choice admits it: + dict(admits_any=bool, blockers=[...], lit=, needs=dict(event_cap,scalar_cap,...), report=check(src, chosen)) + fmt(rep) -> text. CLI: python admit.py WORD [--profile P] [--best] [--json] +Exactness: moments are Decimal(60) evaluations of sum n r^s (pricing.py uses certified intervals; verdicts agree unless |slack| < 1e-25, which `borderline` flags). +""" +import sys,os,json,re,math,decimal,collections +from fractions import Fraction as Q +HERE=os.path.dirname(os.path.abspath(__file__)); sys.path.insert(0,HERE) +from tkcommon import * +decimal.getcontext().prec=60 +D=decimal.Decimal +MAXRANK=145 # ambient rank m in pricing.py (max target) +PHYS_RAW_CONST=15*1664+32*104*(363+1026) # pricing.py raw = 18*10**7 + 15*1664 + 32*104*(events_phys+boundary+1026); events_phys+boundary = 363 calibrated on #5756 (raw_scalar_upper 184647552), word independent +RAW_BUDGET=10**9 +_LN={} +def ln(r): + if r not in _LN: _LN[r]=D(r).ln() + return _LN[r] +def pw(r,e): return (ln(r)*e).exp() +def moment(H,e): return sum(n*pw(r,e) for r,n in H.items() if n) +def qd(x): return D(x.numerator)/D(x.denominator) if isinstance(x,Q) else D(x) +def dq(x,den=10**12): return Q(int((D(x)*den).to_integral_value(rounding=decimal.ROUND_CEILING)),den) + +# ---------------------------------------------------------------------------------------------- literals +def lits_of(profile,w=None): + """literal set of an adopted/legacy profile name (the pricing.py literals the PR ships)""" + dp=DATA_PROFILES.get(profile); pr=PROFILES.get(profile) or {} + c=(dp or {}).get('compiler') or {} + tail=c.get('tail') or dict(u='1/5',v=1024,c=17,b=18) + L=dict(profile=profile, + decay=Q(c['decay']) if c.get('decay') else Q(pr.get('decay',0.97)).limit_denominator(1000), + power=c.get('power') or pr.get('power',1000), v=tail['v'], c=tail['c'], b=tail['b'], u=Q(tail['u']), + reserve=Q(c['reserve'].replace('10^','10**')) if False else _q(c.get('reserve'),pr.get('reserve',1e-10)), + theta=Q(c['theta']) if c.get('theta') else Q(63,64), + event_cap=(10**9 if os.environ.get('TK_EVENT_CAP')=='0' else (int(os.environ['TK_EVENT_CAP']) if os.environ.get('TK_EVENT_CAP') else (c.get('event_cap') or 26000))), scalar_cap=c.get('scalar_cap') or 10**7) + if dp: L['pins']=dict(public=dp['public'],owned_fields=dp['owned_fields'],lifetimes=dp['lifetimes'],peak=dp['peak'],public_range=tuple((dp.get('interface') or {}).get('public_bound') or (dp['public'],dp['public'])),owned_range=tuple((dp.get('interface') or {}).get('owned_bound') or (dp['owned_fields'],)*2),peak_rule=(dp.get('interface') or {}).get('peak_rule')) + return L +def _q(s,default): + if not s: return Q(default).limit_denominator(10**13) + m=re.match(r'^(\d+)/10\^(\d+)$',s) + return Q(int(m.group(1)),10**int(m.group(2))) if m else Q(s) +def tested_of(profile): + """(KAPPA, TESTED) claim literals of the profile's pricing.py, or None""" + p=os.path.join(HERE,'profiles',str(profile),'pricing.py') + if not os.path.exists(p): return None + m=re.search(r"KAPPA, TESTED = Q\('([^']*)'\), Q\('([^']*)'\)",open(p).read()) + return (Q(m.group(1)),Q(m.group(2))) if m else None + +# ---------------------------------------------------------------------------------------------- counts +def counts(src,profile=None): + """-> dict(n, scalar, paid, helpers, lifetimes, peak, public, owned, live, T, P, profile, pp, kappa)""" + if hasattr(src,'ledger') and hasattr(src,'chs'): # IncrWord + T,P=src.ledger() + return dict(n=sum(len(c.evs) for c in src.chs),scalar=sum(c.scalar for c in src.chs),paid=dict(src.paid),helpers=dict(src.hel),lifetimes=sum(c.life for c in src.chs), + peak=max((c.peak for c in src.chs),default=0),public=src.NPUB,owned=src.NO,live=len(src.live),T=T,P=P,profile=src.profile,pp=src.PP,legal=src.legal_all) + if isinstance(src,str): path,w=load(src) + else: w=src; activate(w) + name=profile or profile_of(w)[0] + with use_profile(name): + rep=legal.check(w); pp=legal.profile_params(w) + T,P=X.invoice(rep) + return dict(n=rep['nevents'],scalar=rep['scalar'],paid=rep['paid'],helpers=rep['helpers'],lifetimes=rep.get('lifetimes') or 0,peak=rep['owned_peak'],public=len(w['initial']), + owned=legal.nown(w),live=len(w['live']),T=T,P=P,profile=name,pp=pp,legal=rep['ok']) +def routes_units(c): + """pricing.py local_routes/1000 = sum(paid)+helper_normalizers(2*H)+main_adapters(2*live)+4*104+4*lifetimes""" + return sum(c['paid'].values())+2*sum(c['helpers'].values())+2*c['live']+4*104+4*c['lifetimes'] +def kappa_crossing(c): + return X.kappa_dec(c['T'],c['P'],50) + +# ---------------------------------------------------------------------------------------------- tail / compiler pieces +def ratios(T,P,tested,cc,bb,u): + """alpha,gamma,delta exactly as pricing.py (tested = TESTED, t = 1-TESTED)""" + t=1-tested + mt=moment(T,t); mp=moment(P,t); mpu=moment(P,t+u) + cu=pw(cc,u) if cc>0 else D(1) + alpha=mp/mt; gamma=mpu/(cu*mt); delta=D(bb)*sum(T.values())/(pw(cc,tested)*mt) + return alpha,gamma,delta +def theorem(alpha,gamma,delta,v,eps): + """README sec.2 bound 1/(1+v eps)+2 gamma^v+2 delta^v ; <1 required. pricing.py replaces the two tail terms by 4/2^32 (= 4 D^v at D^(v/8)=1/16), so adding 4/2^32 here would double count""" + return D(1)/(1+D(v)*eps)+2*gamma**v+2*delta**v +def wins_H(step,power): + """pricing.py: minimal right with (step*right+1)^power < 2^right (doubling+bisect), H = step*right. Decimal-log comparison.""" + ln2=D(2).ln() + wins=lambda j: D(power)*(D(step*j+1)).ln() < D(j)*ln2 + left,right=1,2 + while not wins(right): left,right=right,2*right + while right-left>1: + m=(left+right)//2 + if wins(m): right=m + else: left=m + return step*right,right,wins(right) and not wins(right-1) +def compiler_checks(tq,lit,kappa_claim): + """-> list of (name, kind, value, limit, slack) for the compiler block; slack>0 ok. Values in log10 units where sensible""" + tested=qd(tq); t=1-tested; v=lit['v']; power=lit['power']; th=lit['theta'] + out=[] + # eta = t*145^(-v T) > theta^power + leta=t.ln()-D(v)*tested*ln(MAXRANK); lth=D(power)*qd(th).ln() + out.append(('compiler eta>theta^power','real',float(leta),float(lth),float(leta-lth))) + # 145^(v T) < 2^power + a=D(v)*tested*ln(MAXRANK); b=D(power)*D(2).ln(); out.append(('compiler 145^(vT)<2^power','real',float(a),float(b),float(b-a))) + # 2 (c^v)^64 <= (145^v)^63 + a=D(2).ln()+D(v)*64*ln(lit['c']); b=D(v)*63*ln(MAXRANK); out.append(('compiler 2(c^v)^64<=(145^v)^63','real',float(a),float(b),float(b-a))) + # c^648v (finite threshold)','literal',float(H.bit_length()),float((8*v).bit_length()),1 if (H>8*v and ok) else -1)) + return out + +# ---------------------------------------------------------------------------------------------- main oracle +def con(name,kind,value,limit,slack,note=''): return dict(name=name,kind=kind,value=value,limit=limit,slack=slack,ok=bool(slack>0),note=note) +def check(src,lit=None,tested=None,claim=None,profile=None,_c=None): + """exact admissibility of `src` at literals `lit` (default: adopted profile literals). tested/claim = (TESTED, KAPPA) pricing literals (Fractions); default: the profile's pricing.py literals + else TESTED = crossing - 1e-10, KAPPA = TESTED - 7e-12 (documented rule.""" + c=_c or counts(src,profile) + lit=dict(lit or lits_of(c['profile'])); lit.setdefault('pins',lits_of(c['profile']).get('pins')) + kd=kappa_crossing(c) + if tested is None: + tk=tested_of(c['profile']) if lit.get('use_profile_tested',True) else None + if tk and abs(D(tk[1].numerator)/D(tk[1].denominator)-kd) report the cap ceiling + smax=(RAW_BUDGET-PHYS_RAW_CONST)//18 # word independent: 363 calibrated on #5756 RESULT (raw_scalar_upper) + CS.append(con('raw cap coupling','literal',lit['scalar_cap'],smax,smax-lit['scalar_cap'],'raw=18*cap+...<1e9 => cap <= ~%d (363 phys+boundary events calibrated on #5756; word independent)'%smax)) + # --- tail at the literals + T,P=c['T'],c['P'] + al,ga,de=ratios(T,P,td,lit['c'],lit['b'],qd(lit['u'])) + eps=qd(lit['reserve']); Dd=qd(lit['decay']); v=lit['v'] + CS.append(con('alpha<1-eps','real',float(al),float(1-eps),float(1-eps-al),'alpha=P_t/T_t at TESTED')) + CS.append(con('gamma sumT < D c^T T_t / b')) + return dict(constraints=CS,ok=all(x['ok'] for x in CS),counts={k:(v if not isinstance(v,(dict,collections.Counter)) or k in('paid','helpers') else '..') for k,v in c.items() if k not in('T','P','pp')}, + lit={k:(str(v) if isinstance(v,Q) else v) for k,v in lit.items() if k!='pins'},tested=str(tested),claim=str(claim),kappa=str(kd)[:18],profile=c['profile']) + +# ---------------------------------------------------------------------------------------------- free-literal search +def best(src,profile=None,_c=None): + """choose the best legal free literals; decide whether ANY literal choice admits the word. + Free: event_cap, scalar_cap (<= raw ceiling), tail (c,b,u), v, D, eps, power. Fixed by the word: counts, paid/helpers invoice, pins (the word must carry its own inventory).""" + c=_c or counts(src,profile); base=lits_of(c['profile']) + ap=check(src,None,_c=c) + if ap['ok']: # the adopted literals already admit it: no change + return dict(admits_any=True,strict_ok=True,changes={},blockers=[],lit=ap['lit'],needs={},report=ap,tail_best=None,plan=plan(src,profile,_c=c),at_profile=ap) + kd=kappa_crossing(c); tested=dq(kd-D('1e-10')); claim=tested-Q(7,10**12); td=qd(tested) + T,P=c['T'],c['P']; t=1-td; mt=moment(T,t); sT=sum(T.values()) + alpha=moment(P,t)/mt; eps=dq((1-alpha)/2,10**13) # eps just below 1-alpha + blockers=[] + # tail search over integer c in [2,m), b = least integer with c^64= TESTED (sigma>=1) + best_t=None + for cc in range(2,MAXRANK): + bb=int(round(cc**(64/63)))-2 + bb=max(bb,cc+1) + while cc**64>=bb**63: bb+=1 + if bb>=MAXRANK: continue + delta=D(bb)*sT/(pw(cc,td)*mt) + for uu in [Q(i,64) for i in range(1,129) if Q(i,64)>=tested]: + gamma=moment(P,t+qd(uu))/(pw(cc,qd(uu))*mt) + m=max(gamma,delta) + if best_t is None or msmax: blockers.append('scalar: need cap %d > raw ceiling ~%d (routes %d*1000 alone; helpers %d, MOVEs %d)'%(used+1,smax,routes_units(c),sum(c['helpers'].values()),sum(c['paid'].values()))) + if not tail_ok: blockers.append('tail: best max(gamma,delta)=%.4f >= 1 at c=%d b=%d u=%s (fields %d)'%(float(m),cc,bb,uu,sT)) + if alpha>=1: blockers.append('alpha>=1 at TESTED') + if c['peak']<=0: blockers.append('no owned lifetime') + if tail_ok and alpha<1: + # v, D, power: least v (multiple of 8) satisfying the theorem and the pricing D-test + Dq=dq(m*D('1.0000001'),10**9) if m>D('0.5') else Q(1,2) + Dd=qd(Dq) + def good(v): return theorem(alpha,gamma,delta,v,qd(eps))<1 and Dd**(v//8)8: + mid=(lo+hi)//16*8 + if mid<=lo: break + if good(mid): hi=mid + else: lo=mid + v=hi if good(hi) else v + lit.update(v=v,decay=Dq) + # power: smallest multiple of 128 passing both compiler inequalities + lth=qd(lit['theta']).ln(); leta=t.ln()-D(v)*td*ln(MAXRANK) + pmin=max(math.ceil(float(leta/lth)),math.ceil(float(D(v)*td*ln(MAXRANK)/D(2).ln())))+1 + lit['power']=((pmin+127)//128)*128 + rep=check(src,lit,tested=tested,claim=claim,_c=c) + ok_lit_all=rep['ok'] + # which constraints need literal changes relative to the adopted profile, and which are impossible + changes={k:(str(lit[k]),str(base[k])) for k in ('event_cap','scalar_cap','decay','v','c','b','u','reserve','power','theta') if lit.get(k)!=base.get(k)} + if lit.get('pins')!=base.get('pins'): changes['pins']=(lit['pins'],base.get('pins')) + return dict(admits_any=(not blockers) and ok_lit_all,strict_ok=ap['ok'],changes=changes,blockers=blockers,lit={k:(str(x) if isinstance(x,Q) else x) for k,x in lit.items() if k!='pins'},needs=needs,report=rep, + tail_best=dict(c=cc,b=bb,u=str(uu),gamma=float(gamma),delta=float(delta),margin=float(1-m)),plan=plan(src,profile,_c=c), + at_profile=ap) + +def plan(src,profile=None,_c=None,lit=None): + """budget-aware generator targets at the ADOPTED literals (or `lit`): per resource, how many more 'unit helpers' (a helper with its own MOVE hops and ADD events) the budgets allow, + using THIS word's average per-helper cost. -> dict(per_helper=dict(events,scalar_units), max_helpers=dict(events,scalar,delta), binding=name, now=H)""" + c=_c or counts(src,profile); lit=lit or lits_of(c['profile']); H=max(1,sum(c['helpers'].values())) + ev_ph=c['n']/H; sc_ph=(c['scalar']+routes_units(c)*1000)/H; fixed_ev=0; fixed_sc=0 + kd=kappa_crossing(c); tested=dq(kd-D('1e-10')); td=qd(tested); mt=moment(c['T'],1-td); sT=sum(c['T'].values()) + dcap=int((qd(lit['decay'])*pw(lit['c'],td)*mt/lit['b']).to_integral_value(rounding=decimal.ROUND_FLOOR)) + # fields per helper: 18 calls each + fields_ph=18.0 + out=dict(events=int((lit['event_cap']-1)/ev_ph),scalar=int(lit['scalar_cap']/sc_ph),delta=int(H+(dcap-sT)/fields_ph) if dcap>sT else int(dcap/fields_ph)) + return dict(now=H,per_helper=dict(events=round(ev_ph,2),scalar_units=round(sc_ph,1),moves=round(sum(c['paid'].values())/H,2)),max_helpers=out,binding=min(out,key=out.get),note='linear extrapolation at this word\'s own per-helper cost; delta cap uses 18 fields per helper') + +def fmt(rep): + L=['profile %s kappa %s TESTED %s literals %s'%(rep['profile'],rep['kappa'],rep['tested'],{k:rep['lit'][k] for k in ('event_cap','scalar_cap','decay','v','c','b','u','reserve','power') if k in rep['lit']})] + for x in rep['constraints']: + f=lambda y:('%.6g'%y) if isinstance(y,float) else str(y) + L.append(' %-4s %-30s %-9s value %-22s limit %-22s slack %-12s %s'%('ok' if x['ok'] else 'FAIL',x['name'],x['kind'],f(x['value']),f(x['limit']),f(x['slack']),x['note'][:70])) + L.append('ADMISSIBLE' if rep['ok'] else 'NOT ADMISSIBLE: '+', '.join(x['name'] for x in rep['constraints'] if not x['ok'])) + return '\n'.join(L) + +def main(argv=None): + import argparse + ap=argparse.ArgumentParser(); ap.add_argument('word'); ap.add_argument('--profile'); ap.add_argument('--best',action='store_true'); ap.add_argument('--json',action='store_true') + a=ap.parse_args(argv) + c=counts(a.word,a.profile) + if not a.best: + r=check(a.word,profile=a.profile,_c=c); print(json.dumps(r,indent=1,default=str) if a.json else fmt(r)); return 0 if r['ok'] else 1 + b=best(a.word,a.profile,_c=c) + if a.json: print(json.dumps(b,indent=1,default=str)) + else: + print('AT ADOPTED LITERALS:'); print(fmt(b['at_profile'])); print('\nWITH BEST FREE LITERALS (admits_any=%s):'%b['admits_any']); print(fmt(b['report'])) + print('blockers:',b['blockers'] or 'none'); print('literal changes needed (new, adopted):',b['changes']); print('needs:',b['needs']); print('tail best:',b['tail_best']); print('strict-literal helper plan:',b['plan']) + return 0 if b['admits_any'] else 1 +if __name__=='__main__': sys.exit(main()) diff --git a/research/p104-designer-toolkit-v2/adopt.py b/research/p104-designer-toolkit-v2/adopt.py new file mode 100644 index 0000000000..ec8b767344 --- /dev/null +++ b/research/p104-designer-toolkit-v2/adopt.py @@ -0,0 +1,243 @@ +"""tk adopt PR# [--head SHA] [--pkg research/DIR] [--alias NAME] [--no-accept] [--no-vendor] [--json] [--list] + +Automatic verifier adoption. Fetches the PR head READ-ONLY into $TK_WORK/ext/adopt/g.git (bare, no worktrees; refs/pr/N), locates the package (research/

), +extracts WORD / RESULT.json / pricing.py / every local.py-like module (also inside the retained source tarballs, recursively), and DERIVES the verifier profile +from literals and the RESULT.json census -- nothing is hard-coded per PR: + public / owned_fields / owned lifetimes / peak (RESULT local + the exit rule of the PR's local.py), retired roles + word interface (the word's own keys), + compiler decay / log power / reserve / tail constants and the claim-literal patch regexes (pricing.py), event cap (local.py), census pins, published interval. +The authoritative checker is the PR's OWN local.py + pricing.py: candidates are tried in a sandboxed subprocess and the one whose replay / native output equals RESULT.json is +vendored (sha256 + git blob pinned) under toolkit/profiles//stack/. Validation then reproduces the published interval three ways (tk price fast model, check --native, +accept = the vendored stack) and on any mismatch prints which output field / rule the toolkit does not model, instead of guessing. +The profile is DATA: toolkit/profiles/.json (schema in module docstring); tkcommon registers the alias and selects it for matching words.""" +import sys,os,re,json,gzip,io,tarfile,subprocess,hashlib,time,shutil,decimal +from fractions import Fraction as Q +from tkcommon import * +import tkstack +SRC=W+'/ext/adopt/g.git' +ADOPT=W+'/ext/adopt/work' +PROFDIR=HERE+'/profiles' +UPSTREAM=os.environ.get('TK_UPSTREAM','https://github.com/CrocSwap/integer-mult-bounds.git') +def git(*a,text=False,check=True,timeout=280): + r=subprocess.run(['git','--git-dir='+SRC]+list(a),capture_output=True,timeout=timeout,env=dict(os.environ,GIT_TERMINAL_PROMPT='0')) + if check and r.returncode: raise SystemExit('tk adopt: git %s failed: %s'%(' '.join(a[:3]),r.stderr.decode()[-300:])) + return r.stdout.decode() if text else r.stdout +def rev(ref): + r=subprocess.run(['git','--git-dir='+SRC,'rev-parse','--verify','--quiet',ref+'^{commit}'],capture_output=True,text=True); return r.stdout.strip() or None +def fetch(pr,head=None,refetch=False): + """-> (ref, commit). Local refs first (refs/pr/N, refs/heads/prN); otherwise a read-only `git fetch` of pull/N/head (or of --head SHA) from the upstream URL.""" + if head: + c=rev(head) + if not c: + git('fetch','--no-tags',UPSTREAM,'+refs/pull/%d/head:refs/pr/%d'%(pr,pr) if False else head); c=rev(head) + if not c: raise SystemExit('tk adopt: commit %s not available after fetch'%head) + return c,c + if not refetch: + for ref in ('refs/pr/%d'%pr,'refs/heads/pr%d'%pr): + c=rev(ref) + if c: return ref,c + git('fetch','--no-tags',UPSTREAM,'+refs/pull/%d/head:refs/pr/%d'%(pr,pr)) + c=rev('refs/pr/%d'%pr) + if not c: raise SystemExit('tk adopt: PR %d not found'%pr) + return 'refs/pr/%d'%pr,c +def tree(commit,pkg): + out={} + for l in git('ls-tree','-r','-l',commit+':'+pkg,text=True).splitlines(): + meta,name=l.split('\t',1); m=meta.split(); out[name]=(m[2],int(m[3])) + return out +def blob(commit,path): return git('show',commit+':'+path) +def find_package(commit): + """research/ holding the WORD last touched by the PR head: the shallowest top-level WORD.json[.gz] changed by the newest commit that touches one""" + c=git('log','-1','--format=%H',commit,'--','research/*/WORD.json.gz','research/*/WORD.json',text=True).strip() + if not c: raise SystemExit('tk adopt: no research/*/WORD.json[.gz] in history of %s'%commit[:10]) + names=[n for n in git('show','--name-only','--format=',c,text=True).splitlines() if re.fullmatch(r'research/[^/]+/WORD\.json(\.gz)?',n)] + if not names: raise SystemExit('tk adopt: commit %s changes no top-level package WORD'%c[:10]) + return names[0].rsplit('/',1)[0] +def safe_extract(raw,dest,depth=0,found=None): + """extract tar(.gz) bytes into dest (regular files only, no absolute / .. paths), recursing into nested archives (depth<=3); -> list of extracted file paths""" + found=[] if found is None else found + if raw[:2]==b'\x1f\x8b': raw=gzip.decompress(raw) + with tarfile.open(fileobj=io.BytesIO(raw)) as t: + for m in t.getmembers(): + n=m.name + if not m.isfile() or n.startswith('/') or '..' in n.split('/') or m.size>200_000_000: continue + p=os.path.join(dest,n); os.makedirs(os.path.dirname(p),exist_ok=True); data=t.extractfile(m).read(); open(p,'wb').write(data); found.append(p) + if depth<3 and re.search(r'\.(tar|tgz|tar\.gz)$',n): + try: safe_extract(data,p+'.x',depth+1,found) + except Exception: pass + return found +def is_local_like(path): + b=os.path.basename(path) + return b.endswith('.py') and ('local' in b) +def find_cost(d,depth=0): + """the dict that carries the priced receipt (raw_root_interval + productive_fields): RESULT['complete_cost'], RESULT['result'], or the top level -- searched breadth-first""" + if not isinstance(d,dict) or depth>3: return None + if 'raw_root_interval' in d and 'productive_fields' in d: return d + for k in sorted(d,key=lambda k:(k not in('complete_cost','result','price','costs'),k)): + r=find_cost(d[k],depth+1) + if r: return r + return None +def parse_result(commit,pkg,files): + """-> (file name, RESULT dict, priced-receipt dict). RESULT.json first, then FULL-RESULT.json / VERIFY-RESULT / any *RESULT*.json at the package top level""" + names=[n for n in ('RESULT.json','FULL-RESULT.json') if n in files]+sorted(n for n in files if '/' not in n and n.endswith('.json') and 'RESULT' in n and n not in('RESULT.json','FULL-RESULT.json')) + for n in names: + d=json.loads(blob(commit,pkg+'/'+n)); cc=find_cost(d) + if cc: return n,d,cc + raise SystemExit('tk adopt: no result JSON with a priced receipt (raw_root_interval) in %s; looked at %s'%(pkg,names)) +def interval14(raw): + """published 1e-14 crossing interval (lo,hi) from the exact rationals""" + D=decimal.Decimal; decimal.getcontext().prec=40 + f=lambda s:(D(Q(s).numerator)/D(Q(s).denominator)) + return ['%.14f'%f(raw[0]),'%.14f'%f(raw[1])] +def parse_pricing(src): + """literals of the PR's pricing.py -> compiler constants + the claim-literal patch regexes (each must match exactly once)""" + out={}; notes=[] + m=re.search(r"reserve,\s*decay\s*=\s*Q\(1,\s*10\*\*(\d+)\),\s*Q\((\d+),\s*(\d+)\)",src) + if m: out['reserve']='1/10^%s'%m.group(1); out['reserve_f']=10.0**-int(m.group(1)); out['decay']='%s/%s'%(m.group(2),m.group(3)); out['decay_f']=int(m.group(2))/int(m.group(3)) + else: notes.append('reserve/decay literal line not found') + m=re.search(r"theta,\s*power\s*=\s*Q\((\d+),\s*(\d+)\),\s*(\d+)",src) + if m: out['theta']='%s/%s'%(m.group(1),m.group(2)); out['power']=int(m.group(3)) + else: notes.append('theta/power literal not found') + m=re.search(r"t,u,v,c,b\s*=\s*[^,]+,\s*Q\((\d+),(\d+)\),\s*(\d+),\s*(\d+),\s*(\d+)",src) + if m: out['tail']=dict(u='%s/%s'%(m.group(1),m.group(2)),v=int(m.group(3)),c=int(m.group(4)),b=int(m.group(5))) + m=re.search(r"local\['real_scalar_allowance'\]\+local_routes\s*<\s*10\*\*(\d+)",src) + out['scalar_cap']=10**int(m.group(1)) if m else None + m=re.search(r"local_routes\s*=\s*(\(.*?\)\*1000)",src) + out['routes']=m.group(1) if m else None + m=re.search(r"len\(outer\['strict_checks'\]\)\s*==\s*(\d+)\s*and\s*len\(outer\['functional_checks'\]\)\s*==\s*(\d+)",src) + if m: out['outer']=[int(m.group(1)),int(m.group(2))] + patch=[] + for name,pat,tmpl in (('KAPPA_TESTED',r"KAPPA, TESTED = Q\('[^']*'\), Q\('[^']*'\)","KAPPA, TESTED = Q('{KAPPA}'), Q('{TESTED}')"), + ('COUNTS',r"sum\(targets.values\(\)\) == \d+ and sum\(paid.values\(\)\) == \d+","sum(targets.values()) == {sumT} and sum(paid.values()) == {sumP}"), + ('SURPLUS',r"== 760,","== {surplus},")): + c=len(re.findall(pat,src)) + if c==1: patch.append([name,pat,tmpl]) + else: notes.append('claim literal %s matches %d times (expected 1): candidate words can only be run unpatched'%(name,c)) + prevs=sorted(re.findall(r"^(\w*PREVIOUS\w*) = Q\('([^']*)'\)",src,re.M),key=lambda t:Q(t[1])) # every 'previous record' literal, kept in its original order but moved below any candidate's kappa + for i,(nm,v) in enumerate(prevs): patch.append(['PREV_'+nm,nm+r" = Q\('[^']*'\)",nm+" = Q('{PREV_%d}')"%i]) + if not prevs: notes.append('no PREVIOUS literal found (candidate words run unpatched only)') + out['patch']=patch; out['notes']=notes + m=re.search(r"KAPPA, TESTED = Q\('([^']*)'\)",src); out['kappa_literal']=m.group(1) if m else None + return out +def parse_local_rules(src): + """exit rule / caps / pins from a PR's local.py (replay module source)""" + o={} + m=re.search(r"len\(w\['program'\]\)\s*<\s*(\d+)",src); o['event_cap']=int(m.group(1)) if m else None + m=re.search(r"0\s*<\s*peak\s*<=\s*(\d+)",src) + if m: o['peak_rule']='le%s'%m.group(1) + else: + m=re.search(r"peak\s*==\s*(\d+)",src); o['peak_rule']='eq%s'%m.group(1) if m else None + m=re.search(r"lifetimes\s*==\s*(\d+)",src); o['lifetimes_pin']=int(m.group(1)) if m else None + m=re.search(r"(\d+)\s*<=\s*owned\s*<=\s*(\d+)",src); o['owned_bound']=[int(m.group(1)),int(m.group(2))] if m else None + m=re.search(r"(\d+)\s*<=\s*public\s*<=\s*(\d+)",src); o['public_bound']=[int(m.group(1)),int(m.group(2))] if m else None + if not m: + m=re.search(r"public\s*==\s*(\d+)",src); o['public_bound']=[int(m.group(1))]*2 if m else None + return o +def word_interface(w): + return dict(retired_public=list(w.get('retired_public') or []),owned_roles=w.get('owned_roles'),fields=w.get('fields'), + independent_public=len(w['independent_public']) if w.get('independent_public') else None,schema=w.get('schema')) +NATIVE_KEYS=('distinct_maps','main_adapters','helper_normalizers','helpers') +def adopt(pr,head=None,pkg=None,alias=None,vendor=True,do_accept=True,refetch=False,say=print): + t0=time.time(); alias=alias or str(pr); rec=dict(alias=alias,pr=pr,steps={},unmodelled=[]) + ref,commit=fetch(pr,head,refetch); say('fetched %s -> %s'%(ref,commit[:12])) + pkg=pkg or find_package(commit); say('package %s'%pkg) + files=tree(commit,pkg); wname='WORD.json.gz' if 'WORD.json.gz' in files else 'WORD.json' + rname,res,cc=parse_result(commit,pkg,files) + wraw=blob(commit,pkg+'/'+wname); wpath=ADOPT+'/%s/%s'%(alias,wname); os.makedirs(os.path.dirname(wpath),exist_ok=True); open(wpath,'wb').write(wraw) + w=json.load(gzip.open(wpath)) if wname.endswith('.gz') else json.load(open(wpath)) + wsha=hashlib.sha256(wraw).hexdigest() + pricing_src=blob(commit,pkg+'/pricing.py').decode() + # ---- candidate verifier modules: package files + every nested retained archive + cands={} # sha -> (path, origin) + base=ADOPT+'/%s/pkg'%alias; shutil.rmtree(base,ignore_errors=True) + # package pool: this package, then every sibling research/p104-* package its verify/sources/construct text names (a PR may import its parent's retained sources), breadth-first, <=6 packages + allpk=set(git('ls-tree','--name-only',commit+':research/',text=True).split()) + pool=[(pkg,0)]; seen={pkg.split('/')[-1]} + for q,dq in pool: + if len(pool)>=6: break + ft=files if q==pkg else tree(commit,q) + txt=''.join(blob(commit,q+'/'+n).decode('utf8','replace') for n in ('verify.py','sources.py','common.py') if n in ft) + for nm in re.findall(r"p104-[a-z0-9-]+",txt): + if nm in allpk and nm not in seen and len(pool)<6: seen.add(nm); pool.append(('research/'+nm,dq+1)) + for q,dq in pool: + ft=files if q==pkg else tree(commit,q) + for n,(bid,sz) in ft.items(): + if '/' in n and not n.startswith('inputs/'): continue + if n.endswith('.py') or re.search(r'\.(tar|tgz|tar\.gz)$',n): + p=base+'/%d/%s/%s'%(dq,q.split('/')[-1],n); os.makedirs(os.path.dirname(p),exist_ok=True); data=blob(commit,q+'/'+n); open(p,'wb').write(data) + if re.search(r'\.(tar|tgz|tar\.gz)$',n): + for qq in safe_extract(data,p+'.x'): + if is_local_like(qq): cands.setdefault(hashlib.sha256(open(qq,'rb').read()).hexdigest(),(qq,'archive %s/%s :: %s'%(q.split('/')[-1],n,os.path.relpath(qq,p+'.x')))) + elif is_local_like(p): cands.setdefault(hashlib.sha256(data).hexdigest(),(p,'package %s/%s'%(q.split('/')[-1],n))) + rec['candidates']=[(o,s[:10]) for s,(p,o) in cands.items()] + # the capsule local.py of the workspace closure (n-patched) as the last resort for the PR5551..5580 family (their archive/closure supplies it) + import real as R + if not any('productive-controller' in p for p,o in cands.values()): + cl=closure_root()+'/research/p104-productive-controller/local.py' + if os.path.exists(cl): cands.setdefault(hashlib.sha256(open(cl,'rb').read()).hexdigest(),(cl,'workspace closure (PR5545 capsule)')) + rl=res['local']; rn=res.get('native',{}) + rl_n=tkstack.norm(rl) + rep_pick=None; base_pick=None; edits=[]; probes={} + want_edits=['retired_helper'] if 'retired_helper' in rn else [] + pwords=wpath + for sha_,(p,o) in sorted(cands.items(),key=lambda kv:(int(re.search(r'/pkg/(\d+)/',kv[1][0]).group(1)) if '/pkg/' in kv[1][0] else 9,kv[1][0].count('.x/'),'productive-controller' in kv[1][0],kv[1][0])): # package files first, then shallower archives; the 5545 capsule last + if base_pick and rep_pick: break + pr_=tkstack.run_probe(p,pwords,want_edits); probes[o]=pr_ + if pr_.get('error') : continue + if pr_.get('replay')==rl_n and not rep_pick: rep_pick=(p,o,sha_) + nat=pr_.get('native') + if nat is not None and not base_pick: + exp={k:tkstack.norm(rn[k]) for k in NATIVE_KEYS if k in rn} + if want_edits: exp['retired_helper']=rn['retired_helper'] + if all(nat.get(k)==v for k,v in exp.items()): base_pick=(p,o,sha_); edits=want_edits + rec['steps']['probe']={o:{k:(v if k in('replay_error','native_error','error') else 'ok') for k,v in pr_.items() if k.endswith('error') or k in('replay','native')} for o,pr_ in probes.items()} + if not rep_pick: + rec['unmodelled'].append('no candidate local.py reproduces RESULT.json local; per-candidate diff: '+'; '.join('%s: %s'%(o,(pr_.get('error') or pr_.get('replay_error') or str(tkstack.dict_diff(pr_.get('replay',{}),rl_n))[:300])) for o,pr_ in probes.items())) + if not base_pick: + diffs='; '.join('%s: %s'%(o,(pr_.get('error') or pr_.get('native_error') or str(tkstack.dict_diff(pr_.get('native',{}),{k:tkstack.norm(rn[k]) for k in NATIVE_KEYS if k in rn}))[:300])) for o,pr_ in probes.items()) + rec['unmodelled'].append('no candidate native() reproduces RESULT.json native (%s)'%diffs) + # ---- literals + lit=parse_pricing(pricing_src); rec['unmodelled']+=lit.pop('notes') + rules=parse_local_rules(open(rep_pick[0]).read()) if rep_pick else {} + owned_fields=rl.get('owned_fields',w.get('owned_fields',8)); retired=list(w.get('retired_public') or []) + prof=dict(schema='tk-profile/1',name=alias,alias=alias,pr=pr,head=commit,ref=ref,package=pkg, + public=len(w['initial']),owned_fields=owned_fields,lifetimes=rl.get('owned_lifetimes'),peak=rl.get('peak_owned_fields'), + family=dict(public=len(w['initial']),owned_fields=owned_fields,retired_public=retired,schema=w.get('schema'),has_owned_fields_key='owned_fields' in w), + interface=dict(word_interface(w),peak_rule=rules.get('peak_rule'),owned_count=owned_fields+len(retired),lifetimes_pin=rules.get('lifetimes_pin'),owned_bound=rules.get('owned_bound'),public_bound=rules.get('public_bound')), + compiler=dict(decay=lit.get('decay'),decay_f=lit.get('decay_f'),power=lit.get('power'),reserve=lit.get('reserve'),reserve_f=lit.get('reserve_f'),theta=lit.get('theta'),tail=lit.get('tail'), + event_cap=rules.get('event_cap'),scalar_cap=lit.get('scalar_cap'),routes=lit.get('routes'),outer=lit.get('outer')), + census=dict(paid=tkstack.norm(cc.get('paid')),targets=tkstack.norm(cc.get('targets')),helpers=tkstack.norm(rl.get('helpers')),paid_calls=cc.get('paid_calls'),productive_fields=cc.get('productive_fields'), + rank_mass_surplus=cc.get('rank_mass_surplus'),owned_lifetimes=rl.get('owned_lifetimes'),peak_owned_fields=rl.get('peak_owned_fields'),public_inputs=rl.get('public_inputs'), + main_adapters=rn.get('main_adapters'),helper_normalizers=rn.get('helper_normalizers'),distinct_maps=rn.get('distinct_maps'),events=len(w['program']), + local_routes=cc.get('nonrecursive',{}).get('local_routes'),real_scalar_allowance=rl.get('real_scalar_allowance')), + expect=dict(kappa_decimal=cc.get('kappa_decimal'),interval=interval14(cc['raw_root_interval']),raw_root_interval=cc['raw_root_interval'],word_sha256=wsha,result_file=rname), + stack=None,fast=dict(),provenance=dict(date=time.strftime('%Y-%m-%d'),upstream=UPSTREAM,note='derived by tk adopt; no hand-typed constants')) + # ---- vendor the authoritative stack (pinned) + if vendor and rep_pick and base_pick: + sd=PROFDIR+'/'+alias; shutil.rmtree(sd,ignore_errors=True); os.makedirs(sd) + files_pin={} + def put(src,name): + shutil.copy(src,sd+'/'+name); data=open(src,'rb').read() + files_pin[name]=dict(sha256=hashlib.sha256(data).hexdigest(),git_blob=hashlib.sha1(b'blob '+str(len(data)).encode()+b'\0'+data).hexdigest(),origin=[o for p,o in cands.values() if p==src][0] if any(p==src for p,o in cands.values()) else 'package') + bn='base_local.py'; put(base_pick[0],bn) + if rep_pick[0]==base_pick[0]: rn_='base_local.py' + else: rn_='replay_local.py'; put(rep_pick[0],rn_) + open(sd+'/pricing.py','w').write(pricing_src) + pdata=pricing_src.encode(); files_pin['pricing.py']=dict(sha256=hashlib.sha256(pdata).hexdigest(),git_blob=hashlib.sha1(b'blob '+str(len(pdata)).encode()+b'\0'+pdata).hexdigest(),origin='package pricing.py') + prof['stack']=dict(base=dict(file=bn),replay=dict(file=rn_),native=dict(edits=edits,mode='light'),pricing=dict(file='pricing.py',patch=lit['patch']),files=files_pin, + root='closure',caller_root='closure') + prof['provenance']['blobs']={n:b for n,(b,s) in files.items() if n in('pricing.py','verify.py','RESULT.json',wname,'local.py')} + os.makedirs(PROFDIR,exist_ok=True) + wdst=HERE+'/words/%s.json.gz'%alias + if not os.path.exists(wdst): shutil.copy(wpath,wdst) if wname.endswith('.gz') else json.dump(w,gzip.open(wdst,'wt')) + rec['profile']=prof; rec['seconds']=round(time.time()-t0,1); rec['word']=wpath + return rec +def write_profile(prof): + json.dump(prof,open(PROFDIR+'/%s.json'%prof['alias'],'w'),indent=1,sort_keys=False,default=str) +def main(a): + if a.list: + for f in sorted(os.listdir(PROFDIR)): + if f.endswith('.json'): p=json.load(open(PROFDIR+'/'+f)); print('%-6s PR%-5s public %d owned %s lifetimes %s peak %s decay %s power %s reserve %s kappa %s'%(p['alias'],p['pr'],p['public'],p['owned_fields'],p['lifetimes'],p['peak'],p['compiler']['decay'],p['compiler']['power'],p['compiler']['reserve'],p['expect']['kappa_decimal'])) + return 0 + rec=adopt(a.pr,a.head,a.pkg,a.alias,vendor=not a.no_vendor,do_accept=not a.no_accept,refetch=a.refetch) + import adopt_validate + return adopt_validate.finish(rec,a) diff --git a/research/p104-designer-toolkit-v2/adopt_validate.py b/research/p104-designer-toolkit-v2/adopt_validate.py new file mode 100644 index 0000000000..76f61a60f0 --- /dev/null +++ b/research/p104-designer-toolkit-v2/adopt_validate.py @@ -0,0 +1,100 @@ +"""validation half of `tk adopt`: reproduce the PR's published crossing interval with (1) tk price (fast exact model), (2) tk check --native, (3) tk accept (the vendored stack of the +PR's OWN local.py / pricing.py, run unpatched and with the toolkit's claim-literal patch), and print a precise diff of what the toolkit does not model when anything differs.""" +import sys,os,json,gzip,time,decimal,hashlib +from fractions import Fraction as Q +import tkcommon +from tkcommon import * +import tkstack +def _f(s): return float(Q(s)) +def interval_of(o): return [o['crossing_lo'],o['crossing_hi']] +def diff_fast(prof,rep,T,P,side,bud,w): + """model-vs-RESULT.json diff for the fast path: which census number / rule differs""" + out=[]; c=prof['census'] + lg=[v for v in rep['violations']] + if lg: out.append('legal.py rejects the PR\'s own word: %s -> legality rule not modelled (use the PR\'s local.py via accept)'%['%s@%s'%(v[1],v[0]) for v in lg[:3]]) + for key,mine,theirs in (('paid',rep['paid'],c['paid']),('helpers',rep['helpers'],c['helpers'])): + if key=='paid': continue + d=tkstack.dict_diff(tkstack.norm(mine),theirs) + if d: out.append('census %s differs (legal.py vs RESULT local): %s'%(key,d[:4])) + for k,mine,theirs in (('lifetimes',rep.get('lifetimes'),c['owned_lifetimes']),('peak',rep.get('owned_peak'),c['peak_owned_fields'])): + if mine!=theirs: out.append('owned %s: toolkit %s vs RESULT %s'%(k,mine,theirs)) + if sum(P.values())!=c['paid_calls'] or sum(T.values())!=c['productive_fields']: + out.append('invoice totals: toolkit paid_calls %d fields %d vs RESULT %s / %s'%(sum(P.values()),sum(T.values()),c['paid_calls'],c['productive_fields'])) + if c.get('local_routes') is not None and bud['routes']!=c['local_routes']: + out.append('route budget: toolkit %d vs RESULT local_routes %d (price_exact.budgets formula or owned-lifetime term)'%(bud['routes'],c['local_routes'])) + if c.get('real_scalar_allowance') is not None and bud['scalar']!=c['real_scalar_allowance']: + out.append('scalar allowance: toolkit %d vs RESULT %d (scalar cost rule)'%(bud['scalar'],c['real_scalar_allowance'])) + return out +def check_side(prof,res,side): + """alpha/gamma/delta of the toolkit vs the PR's strictification enclosures (float vs enclosure at the TESTED point; informative)""" + st=res.get('complete_cost',{}).get('strictification') or {} + out=[] + for k in('alpha','gamma','delta'): + e=st.get(k) + if e and isinstance(e,dict) and 'upper' in e: + if not(side[k]<=float(e['upper'])+1e-9): out.append('%s toolkit %.12f > PR upper %s'%(k,side[k],e['upper'])) + return out +def validate(rec,say=print,accept=True): + prof=rec['profile']; alias=prof['alias']; path=rec['word']; res=dict(alias=alias,steps={},ok=True,notes=[]) + import legal,price,check,accept as A + import price_exact as X + w=legal.load(path); exp=prof['expect']['interval'] + with tkcommon.use_profile(alias): + # 1. fast price + t=time.time(); o=price.fast(path,w,use_cache=False); got=interval_of(o) + ok1=got==exp + rep=legal.check(w); T,P=X.invoice(rep); bud=X.budgets(rep) + res['steps']['price']=dict(ok=ok1,got=got,expect=exp,legal=o['legal'],side_ok=o['side']['ok'],seconds=round(time.time()-t,1)) + if not ok1 or not o['legal']: + res['ok']=False; res['steps']['price']['diff']=diff_fast(prof,rep,T,P,o['side'],bud,w) + else: + # informational cross-checks even when the interval reproduces + d=diff_fast(prof,rep,T,P,o['side'],bud,w) + if d: res['steps']['price']['notes']=d + # 2. check --native + t=time.time(); role=roles(w); nat=check.native_check(w,w['program'],role) + ok2=o['legal'] and nat['nbad']==0; res['steps']['check_native']=dict(ok=ok2,legal=o['legal'],pairs=nat['distinct_pairs'],bad=nat['nbad'],seconds=round(time.time()-t,1)) + if not ok2: res['ok']=False; res['steps']['check_native']['first_bad']=nat['bad'][:3] + # 3. accept via the vendored stack + if accept and prof.get('stack'): + exact=prof['expect']['raw_root_interval'] + for patched in (False,True): + t=time.time(); r=tkstack.run_isolated(prof,path,patched=patched) + key='accept_patched' if patched else 'accept_unpatched' + if r.get('ok'): + ok3=([r['crossing_lo'],r['crossing_hi']]==exp) and (patched or r['raw_root_interval']==[str(Q(x)) for x in exact]) + res['steps'][key]=dict(ok=ok3,got=[r['crossing_lo'],r['crossing_hi']],outer=r['outer_checks'],paid_calls=r['paid_calls'],fields=r['productive_fields'],seconds=round(time.time()-t,1)) + if not ok3: res['ok']=False; res['steps'][key]['diff']=tkstack.dict_diff([r['crossing_lo'],r['crossing_hi']],exp) + else: + res['ok']=False; res['steps'][key]=dict(ok=False,stage=r.get('stage'),error=r.get('error'),seconds=round(time.time()-t,1)) + elif accept: res['ok']=False; res['steps']['accept']=dict(ok=False,error='no vendored stack (see unmodelled)') + return res +def finish(rec,a): + prof=rec['profile']; alias=prof['alias'] + for u in rec['unmodelled']: print('UNMODELLED: '+u) + if not prof.get('stack'): + print('tk adopt %s: no authoritative stack could be assembled from the PR; profile NOT registered'%alias); return 1 + # the alias word must be the PR's word: warn if the shipped toolkit word differs + wdst=HERE+'/words/%s.json.gz'%alias + if os.path.exists(wdst) and hashlib.sha256(open(wdst,'rb').read()).hexdigest()!=prof['expect']['word_sha256']: + raw=gzip.decompress(open(wdst,'rb').read()); praw=gzip.decompress(open(rec['word'],'rb').read()) if rec['word'].endswith('.gz') else open(rec['word'],'rb').read() + if json.loads(raw)!=json.loads(praw): print('NOTE: toolkit words/%s.json.gz differs from the PR head word (alias word is from another head); validating the PR head word %s'%(alias,rec['word'])) + from adopt import write_profile + write_profile(prof); tkcommon._load_data_profiles() + res=validate(rec,accept=not a.no_accept) + prof['validation']=dict(date=time.strftime('%Y-%m-%d'),ok=res['ok'],steps=res['steps']) + # does the legacy auto-selection for this family agree with the derived constants? if not, the data profile must win automatically + w=json.load(gzip.open(rec['word'])) if rec['word'].endswith('.gz') else json.load(open(rec['word'])) + leg=tkcommon.PROFILES[tkcommon._legacy_auto(w)] + differs=[k for k,v in (('decay',prof['compiler']['decay_f']),('reserve',prof['compiler']['reserve_f']),('peak',prof['peak']),('lifetimes',prof['lifetimes'])) if leg.get(k) is not None and leg.get(k)!=v] + prof['auto']=bool(differs and (tkcommon._legacy_auto(w)!='default' or len(w['initial'])>737)) + if differs: print('NOTE: legacy profile %s differs from the PR in %s -> data profile %s takes precedence for this family (auto)'%(tkcommon._legacy_auto(w),differs,alias)) + write_profile(prof); tkcommon._load_data_profiles() + if a.json: print(json.dumps(res,indent=1,default=str)); return 0 if res['ok'] else 1 + print('tk adopt PR%s (%s, %s): profile public %d owned %s lifetimes %s peak %s | decay %s power %s reserve %s | expect %s'%(prof['pr'],prof['package'].split('/')[-1],prof['head'][:10],prof['public'],prof['owned_fields'],prof['lifetimes'],prof['peak'],prof['compiler']['decay'],prof['compiler']['power'],prof['compiler']['reserve'],prof['expect']['interval'])) + for k,v in res['steps'].items(): + print(' %-18s %s %s'%(k,'PASS' if v['ok'] else 'FAIL',{x:y for x,y in v.items() if x not in('ok','diff','notes')})) + for d in v.get('diff') or []: print(' DIFF '+str(d)) + for d in v.get('notes') or []: print(' note '+str(d)) + print('RESULT: %s'%('ADOPTED, all published interval(s) reproduced' if res['ok'] else 'NOT reproduced -- see DIFF lines (profile is written but flagged validation.ok=false)')) + return 0 if res['ok'] else 1 diff --git a/research/p104-designer-toolkit-v2/alias_core.py b/research/p104-designer-toolkit-v2/alias_core.py new file mode 100644 index 0000000000..d7904221a3 --- /dev/null +++ b/research/p104-designer-toolkit-v2/alias_core.py @@ -0,0 +1,528 @@ +"""alias_core -- P14 ALIAS machinery (ALIAS; module docstring): anchor poset feasibility, edit/DCE, frame closure (hybrid|minimal), exact junk re-solve, relabel, greedy rounds.""" +"""ALIAS lane library: timelines, full symbolic values, dup groups.""" +import sys,os,collections,pickle,time +TK=__import__('os').path.dirname(__import__('os').path.abspath(__file__)) +for p in (TK,TK+'/infra'): sys.path.insert(0,p) +from fractions import Fraction as F +import tkcommon, movekit as M +from ledger import load,lines +def loadw(spec): + p,w=tkcommon.load(spec) if not os.path.exists(spec) else (spec,tkcommon.legal.load(spec)) + tkcommon.activate(w) + return M.pin(w) +class Info: + def __init__(s,w): + s.w=w; s.role,s.mv,s.cred,s.dim=lines(w); s.n=len(w['initial']); s.v=M.View(w); s.sp=[frozenset(x) for x in s.v.spans]; s.S=s.v.S + S=s.S; n=s.n + # full values: val[r] = dict col->Fraction ; columns = initial register ids + val=[None]*(n+64) + for r in range(n): val[r]={r:F(1)} + for r in range(n,n+64): val[r]={} + s.reads=[] # (i, d, src, coef, frame, content_full_of_src (copy)) + s.cont={} # i -> (X-content tuple normalized, scale, junkpart dict) for dirty reads + s.dirty=collections.defaultdict(list) + role=s.role + for i,e in enumerate(S): + if e[0]=='ADD': + d,t,c,f=e[1],e[2],F(e[3]),e[4] + vs=val[t] + if role.get(t)=='H' and 00 else (s.ini[r] if r bit + for e in S: + if e[0] in('ADD','COPY') and (e[1] in own or e[2] in own): of.setdefault(e[-1],len(of)) + elif e[0]=='SCALE' and e[1] in own: of.setdefault(e[-1],len(of)) + s.obit=of + spl=[I.sp[f] for f in of] + s.lowspan=lines+spl # lower bit k -> span ; owned bits at nx+k + s.upspan=hyp+spl # upper bit k -> span + s.nx=nx + # lower bits: X line k -> k ; owned o -> nx+o. upper bits: Y k -> k ; owned o -> nx+o + s.allowed=[0]*len(s.lowspan) + for a,sa in enumerate(s.lowspan): + m=0 + for b,sb in enumerate(s.upspan): + if sa<=sb: m|=1< [(h,i0,i1,scale)] intervals (S positions) during which helper h's X-content (up to scale) == key""" + S=I.S; role=I.role; n=I.n + val=[None]*(n+64) + for r in range(n): val[r]={r:F(1)} + for r in range(n,n+64): val[r]={} + snap=collections.defaultdict(list) + for i,e in enumerate(S): + if e[0]!='ADD': continue + d,t,c,f=e[1],e[2],F(e[3]),e[4]; vd=val[d] + for k,x in val[t].items(): + nx=vd.get(k,0)+c*x + if nx==0: vd.pop(k,None) + else: vd[k]=nx + if role.get(d)=='H': + xs={k:x for k,x in vd.items() if role.get(k)!='H'} + if xs: + k0=min(xs); sc=xs[k0]; snap[d].append((i,(tuple(sorted((k,x/sc) for k,x in xs.items())),sc))) + else: snap[d].append((i,None)) + win=collections.defaultdict(list) + for h,L in snap.items(): + for a in range(len(L)): + i0,kk=L[a]; i1=L[a+1][0] if a+10 ADDs with d2 as DEST after d2's last source-use/dim0/INIT event. -> (indices ascending, last non-movable index or -1)""" + S=I.S; L=[j for (j,fr) in T.t[d2] if j0 and e[2]!=d2 + if ok: + src=e[2] + if any(jj>j and jj0 else ((1<=0 else ((1<=tau or i2 in mv: pass + good=not P.bad(anc_at(h1,tau)|pa|ob,fd|desc_at(h1,tau)|ob) + if good: ok.add((h1,tau,sc1,tuple(mv))); break + continue + else: + lo,hi=min(tau,i2),max(tau,i2) + if any(lo<=j<=hi and S[j][0]=='ADD' and S[j][2]==d2 for (j,_) in T.t[d2]): continue + t2=tau if tau<=i2 else tau-1 + good=not P.bad(anc_at(h1,tau)|anc_at(d2,tau)|ob,desc_at(h1,tau)|desc_at(d2,tau)|ob) + if good: ok.add((h1,tau,sc1)); break + out[(h2,i2)]=ok + return out +def victims(I,F): + nread=collections.Counter() + for key,L in I.dirty.items(): + for x in L: nread[x[2]]+=1 + got=collections.Counter(h for (h,i),ok in F.items() if ok) + return [h for h in nread if got[h]==nread[h]], len(nread) + +def simulate(S,n,nreg): + """exact final matrix rows (dict col->Fraction) of the scalar program S (public registers 0..n-1; owned n..)""" + val=[None]*nreg + for r in range(n): val[r]={r:F(1)} + for r in range(n,nreg): val[r]={} + for e in S: + op=e[0] + if op=='ADD': + d,t,c=e[1],e[2],F(e[3]); vd=val[d] + for k,x in val[t].items(): + nx=vd.get(k,0)+c*x + if nx==0: vd.pop(k,None) + else: vd[k]=nx + elif op=='COPY': + c=F(e[3]); val[e[1]]={k:c*x for k,x in val[e[2]].items()} + elif op=='SCALE': + c=F(e[2]); val[e[1]]={k:c*x for k,x in val[e[1]].items()} + elif op in('INIT','CLEAR'): val[e[1]]={} + return val +def target(w): + n=len(w['initial']); live=set(w['live']); T=[] + for r in range(n): + row={r:F(1)} + if r-112 in live: row[r-112]=F(1) + T.append(row) + return T + +# ---- p14 +"""P14 ALIAS: redirect all dirty reads of a victim helper to an equal-content keeper helper (anchor-level feasibility), realise frames by forward closure, +solve the junk with start loads, relabel registers, price exactly.""" +import sys,os,collections,copy,time +Fr=F +from movekit import qs +def basis_of(s): + b=[];sp={0} + for v in sorted(s): + if v not in sp: b.append(v); sp|={x^v for x in sp} + return b +class Ctx: + def __init__(s,w): + s.w=w; s.I=Info(w); s.P=Poset(s.I); s.T=TL(s.I); s.win=windows(s.I); s.n=s.I.n + s.nown=w.get('owned_fields',8) + s.k0=M.evaluate(w)['kappa'] + s.rd={} + for key,L in s.I.dirty.items(): + for (i,d,t,c,f,sc) in L: s.rd[(t,i)]=(key,d,Fr(c),f,sc) + def feas(s,recut=False): return feas(s.I,s.P,s.T,s.win,recut) +def dce(S,role,n,protect=()): + """drop helpers with no reader (as source of another register); returns S',removed set""" + removed=set() + while True: + rd=collections.Counter() + for e in S: + if e[0]=='ADD' and e[2]!=e[1]: rd[e[2]]+=1 + dead={e[1] for e in S if e[0]=='ADD' and e[1]3 else () + key,d2,a2,f2,sc2=C.rd[(h2,i2)] + ins[tau].append(['ADD',d2,h1,qs(a2*sc2/sc1),f2]) + for j in mv: + if j in moved: continue + if S[j][2] in vs or S[j][1] in vs: continue + moved.add(j); ins[tau].append(list(S[j])) + out=[] + for i,e in enumerate(S): + for ne in ins.get(i,()): out.append(ne) + if i in moved: continue + if e[1] in vs or (e[0] in('ADD','COPY') and e[2] in vs): continue + out.append(list(e)) + for ne in ins.get(len(S),()): out.append(ne) + removed=set(vs) + if do_dce: + out,r2=dce(out,role,n); removed|=r2 + return out,removed +def upper_frames(C,S2,removed): + """U[e]: meet of the frames of all upper anchors (Y final hyperplanes, owned-pinned events) in the future of event e of S2 (backward pass over non-owned register chains)""" + I=C.I; w=C.w; n=I.n; sp=I.sp; own=I.v.own; full=frozenset(range(512)) + U={} + for r in I.role: + if I.role[r]=='Y': U[r]=sp[w['final'][r]] + out=[None]*len(S2) + for i in range(len(S2)-1,-1,-1): + e=S2[i] + if e[0] not in('ADD','COPY','SCALE'): out[i]=full; continue + regs=[e[1]]+([e[2]] if e[0] in('ADD','COPY') else []) + m=full + for r in regs: + if r=nn] + assert len(free)==len(movers) + for r in surv: + if r afterwards frames.assign + (exact CP-SAT frame re-assignment, never worse; heavy: only inside an hq job).""" + if minimal=='best': + import frames as FR + cands=[(m,realise(C,victims,choice,do_dce,junk,log,m)) for m in ('hybrid',True)] + ok=[(m,r[0]) for m,r in cands if r[0] is not None] + if not ok: return cands[0][1] + b=FR.best_closure(ok) + w3=b[1] if b else ok[0][1] + if reframe: w3,_=FR.assign(w3,**reframe) + return w3,'ok' + w3,why=_realise(C,victims,choice,do_dce,junk,log,minimal) + if w3 is not None and reframe: + import frames as FR + w3,_=FR.assign(w3,**reframe) + return w3,why +def _realise(C,victims,choice,do_dce=True,junk=True,log=None,minimal=False): + I=C.I; w=C.w; n=I.n + S2,removed=edit(C,victims,choice,do_dce) + cl=closure(C,S2,removed,minimal) + if isinstance(cl,str): return None,'closure:'+cl.split()[0] + spans,fin,ini0=cl + mp,nn=relabel(C,removed) + frames=[list(b) for b in w['frames']]; fidx={x:i for i,x in enumerate(I.sp)} + def fid(span): + i=fidx.get(span) + if i is None: frames.append(basis_of(span)); i=len(frames)-1; fidx[span]=i + return i + S3=[] + for e,spn in zip(S2,spans): + e=list(e); f=fid(spn) + if e[0]=='INIT': e=['INIT',mp[e[1]],f] + elif e[0]=='CLEAR': e=['CLEAR',mp[e[1]],f] + elif e[0] in('ADD','COPY'): e=[e[0],mp[e[1]],mp[e[2]],e[3],f] + else: e=[e[0],mp[e[1]]]+e[2:-1]+[f] + S3.append(e) + ini=[None]*nn; fn=[None]*nn + for r in range(n): + if r in removed: continue + ini[mp[r]]=fid(ini0[r]); fn[mp[r]]=fid(fin[r]) + w2=dict(w); w2['frames']=frames; w2['initial']=ini; w2['final']=fn + vp=dict(w.get('verifier_profile') or {}); vp['public']=nn; w2['verifier_profile']=vp + w2['live']=[mp[r] for r in w['live']] + assert w2['live']==w['live'] + if junk: + r=solve_junk(w2,S3,nn) + if isinstance(r,str): return None,'junk:'+r + S3=r + v2=M.View(w2); + w3=v2.rebuild_ref(S3) + return w3,'ok' +def solve_junk(w2,S3,nn): + nreg=nn+w2.get('owned_fields',8)+8 + V=simulate(S3,nn,nreg); T=target(w2) + eps=[] # list of (row, col, val) + cols=collections.defaultdict(dict) + for r in range(nn): + d={} + for k in set(V[r])|set(T[r]): + x=T[r].get(k,0)-V[r].get(k,0) + if x: d[k]=x + if d: eps.append((r,d)) + if not eps: return S3 + live=set(w2['live']); role=lambda r:'X' if r in live else 'Y' if r-112 in live and r {row: val} + for r,d in eps: + for k,x in d.items(): bcols[k][r]=x + for k in bcols: + if role(k)!='H' or len(w2['frames'][w2['initial'][k]])!=0: return 'col %d role %s inidim %d'%(k,role(k),len(w2['frames'][w2['initial'][k]])) + # unknown x_{j,k}: sum_j x_j * V[r][j] = eps[r][k] (columns of the CURRENT map V) + Ys=[r for r in range(nn) if role(r)=='Y' or (role(r)=='H' and len(w2['frames'][w2['initial'][r]])==0)] + colJ={j:{} for j in Ys} + for r in range(nn): + for j,x in V[r].items(): + if j in colJ: colJ[j][r]=x + # gaussian elimination on rows r with matrix A[r][j]=V[r][j] (j in Ys); rhs per k + rows=collections.defaultdict(dict) + for j in Ys: + for r,x in colJ[j].items(): rows[r][j]=x + ks=list(bcols) + # build augmented rows + aug={} + for r in rows|{r:None for r in set(r for k in bcols for r in bcols[k])}.keys() if False else set(rows)|{r for k in bcols for r in bcols[k]}: + aug[r]=(dict(rows.get(r,{})),{k:bcols[k][r] for k in bcols if r in bcols[k]}) + piv={} + sol_rows=[] + for r,(A,B) in aug.items(): + A=dict(A); B=dict(B) + # reduce by existing pivots + changed=True + while True: + js=[j for j in A if j in piv] + if not js: break + j=js[0]; pa,pb=piv[j]; f=A[j] + for jj,x in pa.items(): + nx=A.get(jj,0)-f*x + if nx==0: A.pop(jj,None) + else: A[jj]=nx + for kk,x in pb.items(): + nx=B.get(kk,0)-f*x + if nx==0: B.pop(kk,None) + else: B[kk]=nx + if not A: + if B: return 'inconsistent' + continue + j=min(A); f=A[j] + A={jj:x/f for jj,x in A.items()}; B={kk:x/f for kk,x in B.items()} + # eliminate j from existing pivots + for jj,(pa,pb) in list(piv.items()): + if j in pa: + g=pa[j] + for a,x in A.items(): + nx=pa.get(a,0)-g*x + if nx==0: pa.pop(a,None) + else: pa[a]=nx + for kk,x in B.items(): + nx=pb.get(kk,0)-g*x + if nx==0: pb.pop(kk,None) + else: pb[kk]=nx + piv[j]=(A,B) + # solution: free unknowns = 0 ; x_j for pivot j = B (rhs) ; x_{j,k}=piv[j][1][k] + f0=None; loads=[] + for j,(A,B) in piv.items(): + # pivot row: x_j + sum_free A * x_free = B with free=0 + for k,x in B.items(): + loads.append(['ADD',j,k,qs(x),w2['initial'][j]]) + if any(w2['initial'][e[1]]!=w2['initial'][e[2]] for e in loads): return 'frame0 mismatch' + return loads+S3 + +# ---- greedy +MODE=__import__('os').environ.get('FRAMES','hybrid') +RECUT=bool(int(__import__('os').environ.get('RECUT','0'))) +def round_(w,batch,log): + C=Ctx(w); F=C.feas(RECUT); v,nh=victims(C.I,F) + byv=collections.defaultdict(dict) + for (h,i),ok in F.items(): byv[h][i]=ok + log(' victims',len(v),'k',C.k0) + V=set(); K=set(); R=set(); sel=[]; ch={} + for h in v: + c=pick(byv,h); ks={x[0] for x in c.values()}; rs={C.rd[(h,i)][1] for i in c} + if h in K or h in R or (ks&V) or (rs&V): continue + cc={(h,i):x for i,x in c.items()} + S2,removed=edit(C,sel+[h],{**ch,**cc}) + if isinstance(closure(C,S2,removed,MODE),str): continue + sel.append(h); V.add(h); K|=ks; R|=rs; ch.update(cc) + if len(sel)>=batch: break + return C,sel,ch +def attempt(C,sel,ch,log): + """realise; on failure bisect""" + if not sel: return None,0 + cc={k:v for k,v in ch.items() if k[0] in set(sel)} + w3,why=realise(C,sel,cc,minimal=MODE) + if w3 is not None: + o=M.evaluate(w3) + if o.get('legal'): return w3,len(sel) + why='illegal:'+str(o.get('why'))[:80] + log(' fail',len(sel),why[:100]) + if len(sel)==1: return None,0 + m=len(sel)//2 + a,na=attempt(C,sel[:m],ch,log) + return (a,na) if a is not None else attempt(C,sel[m:],ch,log) + +def pick(byv,h): + """for victim h: per reader slot choose one feasible (twin, ...) option, preferring a twin common to all slots (from ALIAS/greedy.py; was missing here -> pscreen 'alias' NameError)""" + rs=byv[h]; common=None + for i,ok in rs.items(): + ks={x[0] for x in ok}; common=ks if common is None else common&ks + return {i:sorted(ok,key=lambda x:(x[0] not in (common or ()),x[1]))[0] for i,ok in rs.items()} diff --git a/research/p104-designer-toolkit-v2/alignbuild/__init__.py b/research/p104-designer-toolkit-v2/alignbuild/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/research/p104-designer-toolkit-v2/alignbuild/anatomy_core.py b/research/p104-designer-toolkit-v2/alignbuild/anatomy_core.py new file mode 100644 index 0000000000..88becee8ae --- /dev/null +++ b/research/p104-designer-toolkit-v2/alignbuild/anatomy_core.py @@ -0,0 +1,250 @@ +"""alignbuild.anatomy_core -- per-side ledger of ANY word of the octet class (BULKGEN; `tk anatomy WORD`). Read-only; no env at import. + +Sections (label EXACT = chain tax / invoice law arithmetic on the word; MODEL = counterfactual with feasibility not checked): + 1 invoice law gapmap.components: R0 per class (X mains, Y mains, owned staging, H signal, H residual bottom/central/top), predicted kappa (EXACT) + 2 skeleton source (X) and routing (Y) main chains: n, tax, park stops (stops strictly between birth and end frame) (EXACT chain tax) + 3 lifetimes ALIGNLAW attrib: every H lifetime (late birth / early end, Shapley split of L = F - A) by mechanism (markets / twins at hubs / other ends / + signal births / other births) with ENABLING-stop cost and net (EXACT tax, MODEL for the enabling set via endanat.py's exact replay) + 4 hubs HUBCOST ledger per octet frame O_r: Xst/Hst/end/O-net/d8/cpy/NET (MODEL: feasibility not checked; HUBDROP says every public hub is forced) + 5 signal H signal R0 + owned staging + hub up-departure d8 stops (the d8 column of 4) + 6 copies pure crossing copies (H registers d0.g.hp.d9) and the COPY events; hub-forced copy interaction = the cpy column of 4 +Frame classes come from fcls.py (tiling-relative, E / T=384), so section 3-6 labels are valid for words that share the #6030 frame geometry.""" +import os, sys, json, gzip, math, hashlib, pickle, collections + +HERE = os.path.dirname(os.path.abspath(__file__)) +TK = os.path.dirname(HERE) + + +def _paths(): + for p in (HERE, TK + '/synth', TK + '/gen2', TK + '/surgery', TK): + if p not in sys.path: sys.path.insert(0, p) + + +def load(spec): + for p in (spec, os.path.join(TK, 'words', spec + '.json.gz'), os.path.join(TK, 'words', spec)): + if os.path.isfile(p): + op = gzip.open if p.endswith('.gz') else open + with op(p, 'rt') as fh: return os.path.abspath(p), json.load(fh) + raise SystemExit('anatomy: no such word %r' % spec) + + +def content_sha(w): + return hashlib.sha256(json.dumps(w, sort_keys=True).encode()).hexdigest()[:16] + + +def tax(ds): + sd = sorted(set(ds)); D = sd[-1] - sd[0] + return 0.0 if D == 0 else sum((b - a) * math.log(D / (b - a)) for a, b in zip(sd, sd[1:])) + + +# ---------------------------------------------------------------- 3 lifetimes +def attribute(L, A): + """ALIGNLAW attrib.py as a function: L = life.ledger(w), A = endanat.compute(w). Returns rows by mechanism (n, L gross, enabling n/cost/dedicated, net lo/hi)""" + rows = L['rows']; dim = L['dim']; fc = L['fcls']; mains = L['mains'] + allch = {r: x['chain'] for r, x in rows.items()} + for r, m in mains.items(): allch[r] = m['chain'] + role = lambda r: 'H' if r in rows else mains[r]['role'] + visit = collections.defaultdict(set) + for r, ch in allch.items(): + for f in ch: visit[f].add(r) + en = collections.defaultdict(set); shared = set() + anat = {x['h']: x for x in A['rows']} + + def endmech(h): + x = rows[h]; a = anat.get(h); c = fc[x['ef']] + if a is None: return 'end?' + if not a['okpub']: return 'end-owned-fed' + if not a['D']: return 'end-inert' + if a['Dx'] >= 40: return 'end-wide-courier' + roles = {s['role'] for s in a['sup']} + if c.startswith('O'): return 'end-hub@O' + ('(X)' if 'X' in roles else '(mates)') + if x['ke'] >= 2 and dim[x['ef']] == 8: return 'end-relay@8' + return 'end-small@d%d' % dim[x['ef']] + + for h, a in anat.items(): + for s in a.get('sup') or []: + r = s['r']; f = rows[h]['ef']; ch = allch[r] + if f in ch and ch[0] != f and ch[-1] != f: + en[(r, f)].add(endmech(h)) + if s['nonend'] > 0: shared.add((r, f)) + + def birthmech(r): + x = rows[r]; c = fc[x['bf']] + if c.startswith('G'): return 'birth-market@G' + if x['sig']: return 'birth-signal@d%d' % dim[x['bf']] + return 'birth-other@%s' % (c if c[0] == 'O' else 'd%d' % dim[x['bf']]) + + for f, c in fc.items(): + if not c.startswith('G'): continue + for r in visit.get(f, ()): + ch = allch[r] + if ch[0] != f and ch[-1] != f: en[(r, f)].add('birth-market@G') + G = collections.defaultdict(lambda: [0, 0.0]) + for r, x in rows.items(): + if x['b0']: k = birthmech(r); G[k][0] += 1; G[k][1] += x['Lb'] + if x['e9']: k = endmech(r); G[k][0] += 1; G[k][1] += x['Le'] + C = collections.defaultdict(lambda: [0, 0.0]); Cd = collections.Counter(); byrole = collections.Counter() + per = collections.defaultdict(list) + for (r, f), ms in en.items(): per[r].append((f, ms)) + for r, L2 in per.items(): + ch = allch[r]; sd = tuple(sorted(set(dim[f] for f in ch))) + drop = {dim[f] for f, _ in L2} + c = tax(sd) - tax(tuple(d for d in sd if d not in drop)) + ms = sorted(set(m for _, s in L2 for m in s)) + ded = all((r, f) not in shared for f, _ in L2) + for m in ms: + C[m][0] += 1; C[m][1] += c / len(ms) + if ded: Cd[m] += c / len(ms) + byrole[role(r)] += c + out = [] + for k in sorted(G, key=lambda k: -G[k][1]): + out.append(dict(mechanism=k, n=G[k][0], L=G[k][1], en_n=C[k][0], en_cost=C[k][1], en_dedicated=Cd[k], net_lo=G[k][1] - C[k][1], net_hi=G[k][1] - Cd[k])) + return dict(rows=out, total_L=sum(G[k][1] for k in G), enabling_cost=sum(v[1] for v in C.values()), enabling_by_role={k: round(v, 3) for k, v in byrole.items()}) + + +def group_mechanisms(rows): + """collapse attrib rows into the requested groups: markets / twins (hub ends) / ends (other) / signal births / other births""" + g = collections.OrderedDict((k, dict(n=0, L=0.0, en_cost=0.0, net_lo=0.0, net_hi=0.0)) for k in ('markets', 'twins', 'ends', 'signal', 'births')) + for r in rows: + m = r['mechanism'] + k = 'markets' if m == 'birth-market@G' else 'twins' if m.startswith('end-hub@O') else 'signal' if m.startswith('birth-signal') else 'births' if m.startswith('birth-') else 'ends' + for f in ('n', 'L', 'en_cost', 'net_lo', 'net_hi'): g[k][f] += r[f] + return g + + +def lifetimes(w, use_cache=True, cache_dir=None): + """life ledger + exact end anatomy (cached by content sha: the replay is minutes) + attribution""" + _paths() + import life as Life, endanat + cache_dir = cache_dir or os.path.join(HERE, 'out', 'cache'); sha = content_sha(w) + L = Life.ledger(w); src = 'computed' + cf = os.path.join(cache_dir, 'anat_%s.pkl' % sha); seed = os.path.join(HERE, 'data', 'anat_%s.pkl' % sha) + A = None + for f in (seed, cf): + if use_cache and os.path.exists(f): + try: A = pickle.load(open(f, 'rb')); src = 'cache:' + os.path.basename(f); break + except Exception: A = None + if A is None: + A = endanat.compute(w) + try: os.makedirs(cache_dir, exist_ok=True); pickle.dump(A, open(cf, 'wb')) + except OSError: pass + at = attribute(L, A) + rows = L['rows'] + at['helpers'] = len(rows); at['births'] = sum(x['b0'] for x in rows.values()); at['ends'] = sum(x['e9'] for x in rows.values()) + at['groups'] = group_mechanisms(at['rows']); at['anat_source'] = src + return at, L + + +# ---------------------------------------------------------------- 2 skeleton / mains +def mains(L): + out = {} + for role in 'XY': + ms = [m for m in L['mains'].values() if m['role'] == role] + stops = sum(max(0, len(m['chain']) - 2) for m in ms) + out[role] = dict(n=len(ms), tax=sum(m['tax'] for m in ms), stops=stops, moved=sum(1 for m in ms if len(m['chain']) > 1)) + return out + + +# ---------------------------------------------------------------- 4 hubs, 6 copies (HUBCOST ledger.py as a function) +def hub_ledger(w): + _paths() + import rp, fcls as F + fr = w['frames']; tl = rp.timelines(w); n = len(w['initial']); LV = set(w['live']) + role = lambda r: 'O' if r >= n else ('X' if r in LV else ('Y' if r - 112 in LV else 'H')) + cls = {} + def fc(f): + if f not in cls: cls[f] = F.cls(fr[f]) + return cls[f] + chains = {r: [f for _, _, f in tl[r]] for r in tl} + # copies: pure crossing copies d0.g.hp.d9 (COPYFREE cc1); hub sharer M of a copy = first register (id order) other than c visiting g and an O frame + copies = [] + for r, ch in sorted(chains.items()): + if r >= n or role(r) != 'H': continue + seq = [(fc(f)[0], f) for f in ch if not fc(f)[0].startswith('d1')] # a dim-1 relay stop does not make a copy impure (COPYFREE c2 chains omit it) + if [c for c, _ in seq] != ['d0', 'g', 'hp', 'd9']: continue + copies.append(dict(c=r, g=seq[1][1], hp=seq[2][1])) + share = {} + for x in copies: + M = [r for r, ch in sorted(chains.items()) if r != x['c'] and x['g'] in ch and any(fc(f)[0] == 'O' for f in ch)] + x['M'] = M + if M: share.setdefault(M[0], x) + TC = tax([0, 3, 6, 9]) + Ofr = collections.defaultdict(list) + for f in range(len(fr)): + if len(fr[f]) == 4 and fc(f)[0] == 'O': Ofr[fc(f)[1]].append(f) + TOT = collections.Counter(); rows = [] + for o, Os in sorted(Ofr.items()): + Os = set(Os); c = collections.Counter(); k = collections.Counter() + for r in range(n): + ch = chains.get(r) + if not ch or not Os & set(ch): continue + ds = [len(fr[f]) for f in ch]; rl = role(r) + new = [dm for f, dm in zip(ch, ds) if f not in Os] + ender = ch[-1] in Os + if ender: new = new + [9] + dn = tax(sorted(set(new))) - tax(ds) + if ender: c['end'] -= dn; k['E'] += 1 + else: c[rl + 'st'] -= dn; k[rl] += 1 + i = max(j for j, f in enumerate(ch) if f in Os) + if i + 1 < len(ch) and ds[i + 1] == 8 and rl != 'O': + c['d8'] += tax(ds) - tax(ds[:i + 1] + ds[i + 2:]) + if r in share and share[r]['g'] in ch and 8 not in ds: + j = ch.index(share[r]['g']); fl = ds[:j + 1] + [6, 9] + df = tax(sorted(set(fl))) - tax(ds) - TC + c['cpy'] += -(df - dn); k['cp'] += 1 + c['O-net'] = c['Xst'] + c['Hst'] + c['end']; c['NET'] = c['O-net'] + c['cpy'] + for kk, v in c.items(): TOT[kk] += v + for kk, v in k.items(): TOT['n' + kk] += v + rows.append(dict(octet=o, frames=sorted(Os), nX=k['X'], nH=k['H'], nE=k['E'], ncp=k['cp'], **{kk: round(c[kk], 4) for kk in ('Xst', 'Hst', 'end', 'O-net', 'd8', 'cpy', 'NET')})) + tot = dict(nX=TOT['nX'], nH=TOT['nH'], nE=TOT['nE'], ncp=TOT['ncp'], **{kk: round(TOT[kk], 4) for kk in ('Xst', 'Hst', 'end', 'O-net', 'd8', 'cpy', 'NET')}) + ncopy_ev = sum(1 for e in w['program'] if e[0] == 'COPY') + return dict(rows=rows, total=tot, copies=dict(n_pure_crossing=len(copies), with_hub_sharer=sum(1 for x in copies if x['M']), copy_events=ncopy_ev, copy_registers=len({e[1] for e in w['program'] if e[0] == 'COPY'}))) + + +# ---------------------------------------------------------------- driver +def anatomy(spec, with_lifetimes=True, use_cache=True): + """full anatomy dict of a word (path or name in words/)""" + _paths() + path, w = load(spec) + import gapmap + comp = gapmap.components(w) + out = dict(word=os.path.basename(path), content_sha=content_sha(w), regs=len(w['initial']), events=len(w['program'])) + R0 = comp['R0']; os_ = comp['owned'] + out['invoice'] = dict(R0=R0, total=comp['total'], exact_total=comp['exact_total'], counts=comp['counts'], owned=os_ if isinstance(os_, dict) else {}, kappa_pred=None) + try: out['invoice']['kappa_pred'] = gapmap.pred_kappa(comp['total'], (os_.get('paid') if isinstance(os_, dict) and 'paid' in os_ else gapmap.LAW_PAID0)) + except Exception: pass + if with_lifetimes: + at, L = lifetimes(w, use_cache) + out['skeleton'] = mains(L); out['lifetimes'] = at + else: + import life as Life + out['skeleton'] = mains(Life.ledger(w)) + hl = hub_ledger(w) + out['hubs'] = hl['rows']; out['hubs_total'] = hl['total']; out['copies'] = hl['copies'] + h = comp['R0'] + out['signal'] = dict(H_signal_R0=h.get('H signal (touch owned)'), owned_staging_R0=h.get('owned (O)'), hub_up_departure_d8=hl['total']['d8'], H_signal_n=comp['counts'].get('Hsig')) + return out + + +def fmt(a): + L = [] + L.append('anatomy %s (content sha %s, %d regs, %d events)' % (a['word'], a['content_sha'], a['regs'], a['events'])) + iv = a['invoice'] + L.append('== 1 invoice law (EXACT): R0 by class; total R0 %.1f (exact replay %.1f)%s' % (iv['total'], iv['exact_total'], ' predicted kappa %.7f' % iv['kappa_pred'] if iv.get('kappa_pred') else '')) + for k, v in iv['R0'].items(): L.append(' %-32s %9.1f' % (k, v)) + sk = a['skeleton'] + L.append('== 2 skeleton / mains (EXACT chain tax): X (sources) n %d tax %.1f park stops %d | Y (readers/routing) n %d tax %.1f stops %d' % (sk['X']['n'], sk['X']['tax'], sk['X']['stops'], sk['Y']['n'], sk['Y']['tax'], sk['Y']['stops'])) + if 'lifetimes' in a: + lt = a['lifetimes'] + L.append('== 3 lifetimes by mechanism: %d helpers, %d late births, %d early ends, total L %.1f, enabling cost %.1f [anat: %s]' % (lt['helpers'], lt['births'], lt['ends'], lt['total_L'], lt['enabling_cost'], lt['anat_source'])) + L.append(' %-16s %5s %8s %6s %8s %8s %8s' % ('group', 'n', 'L gross', 'en.cost', '', 'net lo', 'net hi')) + for k, v in lt['groups'].items(): L.append(' %-16s %5d %8.1f %8.1f %8s %8.1f %8.1f' % (k, v['n'], v['L'], v['en_cost'], '', v['net_lo'], v['net_hi'])) + L.append(' by mechanism:') + for r in lt['rows']: L.append(' %-26s n %3d L %7.1f | enabling %3d cost %6.1f | net %7.1f..%7.1f' % (r['mechanism'], r['n'], r['L'], r['en_n'], r['en_cost'], r['net_lo'], r['net_hi'])) + t = a['hubs_total'] + L.append('== 4 hubs (HUBCOST, MODEL): %d octet frames; O-net %.1f (Xst %.1f Hst %.1f end %.1f) + cpy %.1f = NET %.1f ; d8 (signal column) %.1f' % (len(a['hubs']), t['O-net'], t['Xst'], t['Hst'], t['end'], t['cpy'], t['NET'], t['d8'])) + s = a['signal'] + L.append('== 5 signal: H signal R0 %s (n %s), owned staging %s, hub up-departure d8 %.1f' % (None if s['H_signal_R0'] is None else round(s['H_signal_R0'], 1), s['H_signal_n'], None if s['owned_staging_R0'] is None else round(s['owned_staging_R0'], 1), s['hub_up_departure_d8'])) + c = a['copies'] + L.append('== 6 copies: pure crossing copies %d (with a hub sharer %d), COPY events %d, COPY destination registers %d ; hub-forced copy interaction %.1f' % (c['n_pure_crossing'], c['with_hub_sharer'], c['copy_events'], c['copy_registers'], t['cpy'])) + return '\n'.join(L) diff --git a/research/p104-designer-toolkit-v2/alignbuild/api.py b/research/p104-designer-toolkit-v2/alignbuild/api.py new file mode 100644 index 0000000000..bca9230007 --- /dev/null +++ b/research/p104-designer-toolkit-v2/alignbuild/api.py @@ -0,0 +1,148 @@ +"""alignbuild.api -- the five pinned builders behind ONE interface (BULKGEN, Oct 28; notes toolkit/module docstring). + +Every side is a strip-and-rebuild solver: it deletes one class of events/stops of a word and re-solves them from the rules, and it is accepted +only if the result is LEGAL at kappa == the kappa of the word it was given (|dk| < 1e-13, exact `tk price`). So rebuild(word) returns a word +with the SAME exact kappa whose events of the selected sides were produced by rules, not copied from the swarm. + + word in, word out: step(side_script, word_in, word_out, argv) -> StepResult (one builder call, one subprocess) + exact kappa check: kappa_of(path) -> dict(kappa, legal, events, side_ok, ...) (`tk price --json`, Decimal-50) + composed chain: rebuild(word, out, sides, ...) -> dict (the verified FULLWORD order, filtered by `sides`) + +sides (names of `tk rebuild --sides`): skeleton (SKELORIGIN sb -> skeleton.py), routing (YROUTE yb -> routing.py; fused: skeleton.py calls it, so +`routing` selects the same steps as `skeleton`), hubs (HUBRULES hubs.py + OWNEDHUB hubs_owned.py), markets (MKTCOMPACT markets.py + MKTO2/FULLWORD +markets_full.py), signal (SIGPIN sigside.py). The plan (which octets / hub frames / duals / roots, in which order, with which flags) is a JSON +manifest; data/manifest_6030.json is #6030's. No environment variable is set here or at import; builders get none.""" +import os, sys, json, gzip, subprocess, time, shutil + +HERE = os.path.dirname(os.path.abspath(__file__)) +TK = os.path.dirname(HERE) +W = TK +PY = sys.executable +SIDES = ('skeleton', 'routing', 'hubs', 'markets', 'signal') +TOL = 1e-13 +MANIFEST6030 = os.path.join(HERE, 'data', 'manifest_6030.json') + + +def resolve(spec): + """path to WORD.json[.gz] or a name in toolkit/words/ (e.g. 6030)""" + for p in (spec, os.path.join(TK, 'words', spec + '.json.gz'), os.path.join(TK, 'words', spec + '.json'), os.path.join(TK, 'words', spec)): + if os.path.isfile(p): return os.path.abspath(p) + raise SystemExit('rebuild: no such word %r' % spec) + + +def nevents(path): + op = gzip.open if path.endswith('.gz') else open + with op(path, 'rt') as fh: return len(json.load(fh)['program']) + + +def kappa_of(path): + """exact `tk price --json` of a word file (Decimal-50 kappa string -> float in 'kappa'; also legal, events, side_ok, event_slack)""" + p = subprocess.run([PY, '-B', os.path.join(TK, 'tk.py'), 'price', path, '--json', '--no-cache'], capture_output=True, text=True, cwd=W) + txt = p.stdout + try: o = json.loads(txt[txt.index('{'):]) + except Exception: return dict(kappa=None, legal=False, events=None, side_ok=False, error=(p.stdout + p.stderr)[-400:]) + s = o.get('side', {}) + return dict(kappa=float(o['kappa']), kappa_str=o['kappa'], legal=bool(o['legal']), events=o['events'], side_ok=(s.get('ok', None) if isinstance(s, dict) and 'ok' in s else not bool(o.get('violations'))), + event_slack=o.get('budgets', {}).get('event_slack'), sha=o.get('sha'), violations=o.get('violations', [])) + + +def _result_line(out): + res = [l for l in out.splitlines() if 'RESULT' in l] + return (res[-1] if res else (out.strip().splitlines() or ['NO OUTPUT'])[-1]).strip() + + +def step(script, argv, out_path, cwd=None, timeout=None): + """run ONE builder script (alignbuild/